From 71e0e6356a2432a7a519097b4d0c3fe1e78d513f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B5=D0=BF=D0=B0=D0=BD=D0=BE=D0=B2=20=D0=94?= =?UTF-8?q?=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Mon, 15 Apr 2024 07:48:58 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=20=D0=B8=D0=BC?= =?UTF-8?q?=D0=BF=D0=BE=D1=80=D1=82=20=D0=93=D0=93=D0=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...43251_Update_WellOperationName.Designer.cs | 9399 +++++++++++++++++ ...20240415043251_Update_WellOperationName.cs | 32 + .../AsbCloudDbContextModelSnapshot.cs | 12 +- AsbCloudDb/Model/WellOperationCategory.cs | 2 +- .../Templates/WellOperationFactTemplate.xlsx | Bin 45673 -> 45635 bytes .../Templates/WellOperationPlanTemplate.xlsx | Bin 68320 -> 68458 bytes .../WellOperations/WellOperationParser.cs | 4 +- 7 files changed, 9440 insertions(+), 9 deletions(-) create mode 100644 AsbCloudDb/Migrations/20240415043251_Update_WellOperationName.Designer.cs create mode 100644 AsbCloudDb/Migrations/20240415043251_Update_WellOperationName.cs diff --git a/AsbCloudDb/Migrations/20240415043251_Update_WellOperationName.Designer.cs b/AsbCloudDb/Migrations/20240415043251_Update_WellOperationName.Designer.cs new file mode 100644 index 00000000..93fe961c --- /dev/null +++ b/AsbCloudDb/Migrations/20240415043251_Update_WellOperationName.Designer.cs @@ -0,0 +1,9399 @@ +// +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("20240415043251_Update_WellOperationName")] + partial class Update_WellOperationName + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("Russian_Russia.1251") + .HasAnnotation("ProductVersion", "8.0.2") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "adminpack"); + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("AsbCloudDb.Model.Cluster", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption") + .HasComment("Название"); + + b.Property("IdDeposit") + .HasColumnType("integer") + .HasColumnName("id_deposit"); + + b.Property("Latitude") + .HasColumnType("double precision") + .HasColumnName("latitude"); + + b.Property("Longitude") + .HasColumnType("double precision") + .HasColumnName("longitude"); + + b.Property("Timezone") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.HasIndex("IdDeposit"); + + b.ToTable("t_cluster", t => + { + t.HasComment("Кусты"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Company", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.Property("IdCompanyType") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_company_type") + .HasComment("вид деятельности"); + + b.HasKey("Id"); + + b.HasIndex("IdCompanyType"); + + b.ToTable("t_company"); + + b.HasData( + new + { + Id = 1, + Caption = "ООО \"АСБ\"", + IdCompanyType = 3 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.CompanyType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.Property("IsContact") + .HasColumnType("boolean") + .HasColumnName("is_contact"); + + b.Property("Order") + .HasColumnType("integer") + .HasColumnName("order"); + + b.HasKey("Id"); + + b.ToTable("t_company_type"); + + b.HasData( + new + { + Id = 1, + Caption = "Недропользователь", + IsContact = true, + Order = 3 + }, + new + { + Id = 2, + Caption = "Буровой подрядчик", + IsContact = true, + Order = 2 + }, + new + { + Id = 3, + Caption = "Сервис автоматизации бурения", + IsContact = true, + Order = 0 + }, + new + { + Id = 4, + Caption = "Сервис по ГТИ", + IsContact = true, + Order = 6 + }, + new + { + Id = 5, + Caption = "Растворный сервис", + IsContact = true, + Order = 4 + }, + new + { + Id = 6, + Caption = "Сервис по ННБ", + IsContact = true, + Order = 5 + }, + new + { + Id = 7, + Caption = "Служба супервайзинга", + IsContact = false, + Order = 1 + }, + new + { + Id = 9, + Caption = "Сервис по цементированию", + IsContact = true, + Order = 7 + }, + new + { + Id = 11, + Caption = "Дизельный сервис", + IsContact = false, + Order = 9 + }, + new + { + Id = 12, + Caption = "Сервис по обслуживанию верхних силовых приводов", + IsContact = true, + Order = 8 + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Contact", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Company") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("company") + .HasComment("компания"); + + b.Property("Email") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("email") + .HasComment("email"); + + b.Property("FullName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("full_name") + .HasComment("ФИО"); + + b.Property("IdCompanyType") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_company_type") + .HasComment("вид деятельности"); + + b.Property("IdWell") + .HasMaxLength(255) + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ключ скважины"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("phone") + .HasComment("номер телефона"); + + b.Property("Position") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("position") + .HasComment("должность"); + + b.HasKey("Id"); + + b.HasIndex("IdCompanyType"); + + b.HasIndex("IdWell"); + + b.ToTable("t_contact", t => + { + t.HasComment("Контакты"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DailyReports.DailyReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("date") + .HasColumnName("date") + .HasComment("Дата формирования отчёта"); + + b.Property("DateLastUpdate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_last_update") + .HasComment("Дата последнего обновления"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("ID скважины"); + + b.Property("SignBlock") + .HasColumnType("jsonb") + .HasColumnName("sign_block") + .HasComment("Подпись"); + + b.Property("SubsystemBlock") + .HasColumnType("jsonb") + .HasColumnName("subsystem_block") + .HasComment("Наработкой подсистем"); + + b.Property("TimeBalanceBlock") + .HasColumnType("jsonb") + .HasColumnName("time_balance_block") + .HasComment("Баланс времени"); + + b.HasKey("Id"); + + b.HasIndex("IdWell", "Date") + .IsUnique(); + + b.ToTable("t_daily_report", t => + { + t.HasComment("Ежедневные отчёты"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DataSaubStat", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialLoad") + .HasColumnType("double precision") + .HasColumnName("axial_load") + .HasComment("Фактическая нагрузка"); + + b.Property("AxialLoadLimitMax") + .HasColumnType("double precision") + .HasColumnName("axial_load_limit_max") + .HasComment("Максимально допустимая нагрузка"); + + b.Property("AxialLoadSp") + .HasColumnType("double precision") + .HasColumnName("axial_load_sp") + .HasComment("Ограничение факт. нагрузки"); + + b.Property("BlockSpeedSp") + .HasColumnType("double precision") + .HasColumnName("block_speed_sp") + .HasComment("Ограничение скорости блока"); + + b.Property("DateEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_end") + .HasComment("Дата и время окончания"); + + b.Property("DateStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_start") + .HasComment("Дата и время начала"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина забоя по стволу конечная"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина забоя по стволу начальная"); + + b.Property("EnabledSubsystems") + .HasColumnType("integer") + .HasColumnName("enabled_subsystems") + .HasComment("Флаги подсистем"); + + b.Property("Flow") + .HasColumnType("double precision") + .HasColumnName("flow") + .HasComment("Фактический расход"); + + b.Property("HasOscillation") + .HasColumnType("boolean") + .HasColumnName("has_oscillation") + .HasComment("Наличие или отсутствие осцилляции"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Название автоопределённой операции"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator") + .HasComment("Работа при достижении ограничения"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Ключ телеметрии"); + + b.Property("Pressure") + .HasColumnType("double precision") + .HasColumnName("pressure") + .HasComment("Давление"); + + b.Property("PressureIdle") + .HasColumnType("double precision") + .HasColumnName("pressure_idle") + .HasComment("Давление холостого хода"); + + b.Property("PressureSp") + .HasColumnType("double precision") + .HasColumnName("pressure_sp") + .HasComment("Ограничение фактического давления"); + + b.Property("RotorSpeed") + .HasColumnType("double precision") + .HasColumnName("rotor_speed") + .HasComment("Фактическая скорость оборотов ВСП"); + + b.Property("RotorTorque") + .HasColumnType("double precision") + .HasColumnName("rotor_torque") + .HasComment("Фактический момент"); + + b.Property("RotorTorqueLimitMax") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_limit_max") + .HasComment("Максимально допустимый момент"); + + b.Property("RotorTorqueSp") + .HasColumnType("double precision") + .HasColumnName("rotor_torque_sp") + .HasComment("Ограничение факт. момента"); + + b.Property("Speed") + .HasColumnType("double precision") + .HasColumnName("speed") + .HasComment("Скорость бурения"); + + b.HasKey("Id"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_data_saub_stat", t => + { + t.HasComment("Кеш-таблица для хранения данных для РТК-отчета"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Deposit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption"); + + b.Property("Latitude") + .HasColumnType("double precision") + .HasColumnName("latitude"); + + b.Property("Longitude") + .HasColumnType("double precision") + .HasColumnName("longitude"); + + b.Property("Timezone") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("timezone") + .HasComment("Смещение часового пояса от UTC"); + + b.HasKey("Id"); + + b.ToTable("t_deposit", t => + { + t.HasComment("Месторождение"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DetectedOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Creation") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation") + .HasComment("дата создания"); + + b.Property("DateEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_end") + .HasComment("Дата начала операции"); + + b.Property("DateStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_start") + .HasComment("Дата начала операции"); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Глубина после завершения операции, м"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Глубина на начало операции, м"); + + b.Property("EnabledSubsystems") + .HasColumnType("integer") + .HasColumnName("enabled_subsystems") + .HasComment("флаги включенных подсистем"); + + b.Property("ExtraData") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("extra_data") + .HasComment("доп. инфо по операции"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории операции"); + + b.Property("IdEditor") + .HasColumnType("integer") + .HasColumnName("id_editor") + .HasComment("Редактор"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdUsersAtStart") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Id пользователя по телеметрии на момент начала операции"); + + b.Property("Value") + .HasColumnType("double precision") + .HasColumnName("value") + .HasComment("Ключевой показатель операции"); + + b.HasKey("Id"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_detected_operation", t => + { + t.HasComment("автоматически определенные операции по телеметрии"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillTest", b => + { + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry") + .HasComment("Идентификатор телеметрии"); + + b.Property("DepthStart") + .HasColumnType("real") + .HasColumnName("depthStart") + .HasComment("Глубина начала"); + + b.Property("Params") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("t_drill_test_params") + .HasComment("Параметры записи drill test"); + + b.Property("TimeStampStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("timestamp_start") + .HasComment("Время начала"); + + b.HasKey("Id", "IdTelemetry"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_drill_test", t => + { + t.HasComment("Drill_test"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Driller", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("Имя"); + + b.Property("Patronymic") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("patronymic") + .HasComment("Отчество"); + + b.Property("Surname") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("surname") + .HasComment("Фамилия"); + + b.HasKey("Id"); + + b.ToTable("t_driller", t => + { + t.HasComment("Бурильщик"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.DrillingProgramPart", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("IdFileCategory") + .HasColumnType("integer") + .HasColumnName("id_file_category"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well"); + + b.HasKey("Id"); + + b.HasIndex("IdFileCategory"); + + b.HasIndex("IdWell", "IdFileCategory") + .IsUnique(); + + b.ToTable("t_drilling_program_part", t => + { + t.HasComment("части программ бурения"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Faq", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Answer") + .HasColumnType("text") + .HasColumnName("answer") + .HasComment("Текст ответа"); + + b.Property("CounterQuestion") + .HasColumnType("integer") + .HasColumnName("counter_question") + .HasComment("Счетчик повторений вопроса"); + + b.Property("DateAnswer") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_answer") + .HasComment("Дата ответа"); + + b.Property("DateCreatedQuestion") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_created_question") + .HasComment("Дата создания вопроса"); + + b.Property("DateLastEditedQuestion") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_last_edited_question") + .HasComment("Дата последнего редактирования вопроса"); + + b.Property("IdAuthorAnswer") + .HasColumnType("integer") + .HasColumnName("id_author_answer") + .HasComment("id автора ответа"); + + b.Property("IdAuthorQuestion") + .HasColumnType("integer") + .HasColumnName("id_author_question") + .HasComment("id автора вопроса"); + + b.Property("IdReplacementQuestion") + .HasColumnType("integer") + .HasColumnName("id_replacement_question") + .HasComment("Ключ заменяющего вопроса"); + + b.Property("IsFrequently") + .HasColumnType("boolean") + .HasColumnName("is_frequently") + .HasComment("Частый вопрос"); + + b.Property("Question") + .IsRequired() + .HasColumnType("text") + .HasColumnName("question") + .HasComment("Текст вопроса"); + + b.Property("State") + .HasColumnType("integer") + .HasColumnName("state") + .HasComment("Статус вопроса"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthorAnswer"); + + b.HasIndex("IdAuthorQuestion"); + + b.ToTable("t_faq", t => + { + t.HasComment("вопросы пользователей"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории"); + + b.Property("ShortName") + .HasColumnType("text") + .HasColumnName("short_name") + .HasComment("Короткое название категории"); + + b.HasKey("Id"); + + b.ToTable("t_file_category", t => + { + t.HasComment("Категории файлов"); + }); + + b.HasData( + new + { + Id = 1, + Name = "Растворный сервис", + ShortName = "fluidService" + }, + new + { + Id = 2, + Name = "Цементирование", + ShortName = "cement" + }, + new + { + Id = 3, + Name = "ННБ", + ShortName = "nnb" + }, + new + { + Id = 4, + Name = "ГТИ", + ShortName = "gti" + }, + new + { + Id = 5, + Name = "Документы по скважине", + ShortName = "wellDocuments" + }, + new + { + Id = 6, + Name = "Супервайзер", + ShortName = "supervisor" + }, + new + { + Id = 7, + Name = "Мастер", + ShortName = "master" + }, + new + { + Id = 8, + Name = "Долотный сервис", + ShortName = "toolService" + }, + new + { + Id = 9, + Name = "Буровой подрядчик", + ShortName = "drillService" + }, + new + { + Id = 10, + Name = "Сервис по заканчиванию скважины", + ShortName = "closingService" + }, + new + { + Id = 12, + Name = "Рапорт", + ShortName = "report" + }, + new + { + Id = 1000, + Name = "Программа бурения" + }, + new + { + Id = 1001, + Name = "Задание от геологов" + }, + new + { + Id = 1002, + Name = "Профиль ствола скважины (ННБ)" + }, + new + { + Id = 1003, + Name = "Технологические расчеты (ННБ)" + }, + new + { + Id = 1004, + Name = "Долотная программа" + }, + new + { + Id = 1005, + Name = "Программа по растворам" + }, + new + { + Id = 1006, + Name = "Программа геофизических исследований" + }, + new + { + Id = 1007, + Name = "Планы спусков обсадных колонн" + }, + new + { + Id = 1008, + Name = "Программы цементирования обсадных колонн" + }, + new + { + Id = 10000, + Name = "Проект на бурение транспортного и горизонтального участков скважины" + }, + new + { + Id = 10001, + Name = "Программа на бурение транспортного и горизонтального участков скважины" + }, + new + { + Id = 10002, + Name = "Акт о начале бурения" + }, + new + { + Id = 10003, + Name = "План работ спуска и цементирования направления" + }, + new + { + Id = 10004, + Name = "Программа цементирования направления" + }, + new + { + Id = 10005, + Name = "Мера обсадных труб (направление)" + }, + new + { + Id = 10006, + Name = "Акт на выполненные работы по цементированию направления" + }, + new + { + Id = 10007, + Name = "Отчет по цементированию направления (график)" + }, + new + { + Id = 10008, + Name = "План работ спуска и цементирования кондуктора" + }, + new + { + Id = 10009, + Name = "Программа цементирования (кондуктор)" + }, + new + { + Id = 10010, + Name = "Мера обсадных труб (кондуктор)" + }, + new + { + Id = 10011, + Name = "Карта крепления кондуктора" + }, + new + { + Id = 10012, + Name = "Акт на выполненные работы по цементированию кондуктора" + }, + new + { + Id = 10013, + Name = "Отчет по цементированию кондуктора (график)" + }, + new + { + Id = 10014, + Name = "Акт о замере расстояния от стола ротора до муфты кондуктора" + }, + new + { + Id = 10015, + Name = "Акт опресовки цементного кольца за кондуктором" + }, + new + { + Id = 10016, + Name = "Акт опресовки ППГ с глухими плашками совместно с кондуктором" + }, + new + { + Id = 10017, + Name = "Акт опресовки ПУГ, ППГ с трубными плашками совместно с кондуктором" + }, + new + { + Id = 10018, + Name = "План работ на крепление обсадной колонны (эк. колонна)" + }, + new + { + Id = 10019, + Name = "Программа цементирования (эк. колонна)" + }, + new + { + Id = 10020, + Name = "Мера труб эксплуатационной колонны" + }, + new + { + Id = 10021, + Name = "Карта по креплению скважины (эк. колонна)" + }, + new + { + Id = 10022, + Name = "Акт на установку пружинных центраторов" + }, + new + { + Id = 10023, + Name = "Отчет по цементированию эксплуатационной колонны (график)" + }, + new + { + Id = 10024, + Name = "Акт на выполненные работы по цементированию эксплуатационной колонны" + }, + new + { + Id = 10025, + Name = "Акт об испытании эк. колонны на герметичность (СТОП)" + }, + new + { + Id = 10026, + Name = "Акт опресовки ППГ с глухими плашками совместно с э/колонной" + }, + new + { + Id = 10027, + Name = "Акт опресовки ПУГ, ППГ с трубными плашками совместно с э/колонной" + }, + new + { + Id = 10028, + Name = "Акт на вскрытие продуктивного пласта" + }, + new + { + Id = 10029, + Name = "Акт замера параметров раствора при бурении горизонтального участка" + }, + new + { + Id = 10030, + Name = "Разрешение на спуск «хвостовика» (телефонограмма)" + }, + new + { + Id = 10031, + Name = "План работ на спуск «хвостовика»" + }, + new + { + Id = 10032, + Name = "Акт готовности бурового и энергетического оборудования к спуску «хвостовика»" + }, + new + { + Id = 10033, + Name = "Акт шаблонировки ствола скважины перед спуском «хвостовика»" + }, + new + { + Id = 10034, + Name = "Мера обсадных труб (хвостовик)" + }, + new + { + Id = 10035, + Name = "Акт выполненных работ по спуску хвостовика с закачкой (нефти, солевого раствора" + }, + new + { + Id = 10036, + Name = "Акт о переводе скважины на тех. воду" + }, + new + { + Id = 10037, + Name = "Акт об окончании бурения" + }, + new + { + Id = 10038, + Name = "Акт на передачу скважины в освоение (КРС)" + }, + new + { + Id = 10039, + Name = "Акт на опресовку межколонного пространства с КРС" + }, + new + { + Id = 10040, + Name = "Акт на сдачу скважины в ЦДНГ" + }, + new + { + Id = 10041, + Name = "Паспорт ОУС (заполняется геологами)" + }, + new + { + Id = 10042, + Name = "Паспорт скважины (заполняется геологами)" + }, + new + { + Id = 10043, + Name = "Фактические данные бурения (вставляются в паспорт скважины)" + }, + new + { + Id = 20000, + Name = "Справки по страницам" + }, + new + { + Id = 30000, + Name = "Инструкции" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id пользователя, загрузившего файл"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("id категории файла"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("IsDeleted") + .HasColumnType("boolean") + .HasColumnName("is_deleted") + .HasComment("Удален ли файл"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название файла"); + + b.Property("Size") + .HasColumnType("bigint") + .HasColumnName("file_size") + .HasComment("Размер файла"); + + b.Property("UploadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdWell"); + + b.ToTable("t_file_info", t => + { + t.HasComment("Файлы всех категорий"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.FileMark", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Comment") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("comment") + .HasComment("Комментарий"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_created") + .HasComment("Дата совершенного действия"); + + b.Property("IdFile") + .HasColumnType("integer") + .HasColumnName("id_file") + .HasComment("id файла"); + + b.Property("IdMarkType") + .HasColumnType("integer") + .HasColumnName("id_mark_type") + .HasComment("0 - отклонен, 1 - согласован"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("id пользователя"); + + b.Property("IsDeleted") + .HasColumnType("boolean") + .HasColumnName("is_deleted") + .HasComment("Помечен ли файл как удаленный"); + + b.HasKey("Id"); + + b.HasIndex("IdFile"); + + b.HasIndex("IdUser"); + + b.ToTable("t_file_mark", t => + { + t.HasComment("Действия с файлами."); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemFloat", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdRecord") + .HasColumnType("integer") + .HasColumnName("id_record"); + + b.Property("IdItem") + .HasColumnType("integer") + .HasColumnName("id_item"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Value") + .HasColumnType("real") + .HasColumnName("value"); + + b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime"); + + b.ToTable("t_wits_float", t => + { + t.HasComment("таблица данных ГТИ с типом значения float"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemInt", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdRecord") + .HasColumnType("integer") + .HasColumnName("id_record"); + + b.Property("IdItem") + .HasColumnType("integer") + .HasColumnName("id_item"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Value") + .HasColumnType("integer") + .HasColumnName("value"); + + b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime"); + + b.ToTable("t_wits_int", t => + { + t.HasComment("таблица данных ГТИ с типом значения int"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.GTR.WitsItemString", b => + { + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.Property("IdRecord") + .HasColumnType("integer") + .HasColumnName("id_record"); + + b.Property("IdItem") + .HasColumnType("integer") + .HasColumnName("id_item"); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Value") + .IsRequired() + .HasColumnType("text") + .HasColumnName("value"); + + b.HasKey("IdTelemetry", "IdRecord", "IdItem", "DateTime"); + + b.ToTable("t_wits_string", t => + { + t.HasComment("таблица данных ГТИ с типом значения string"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.HelpPage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории файла"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название файла"); + + b.Property("Size") + .HasColumnType("bigint") + .HasColumnName("file_size") + .HasComment("Размер файла"); + + b.Property("UrlPage") + .IsRequired() + .HasColumnType("text") + .HasColumnName("url_page") + .HasComment("Url страницы"); + + b.HasKey("Id"); + + b.HasIndex("IdCategory"); + + b.ToTable("t_help_page", t => + { + t.HasComment("Справки"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.LimitingParameter", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DateEnd") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_end"); + + b.Property("DateStart") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_start"); + + b.Property("DepthEnd") + .HasColumnType("real") + .HasColumnName("depth_end"); + + b.Property("DepthStart") + .HasColumnType("real") + .HasColumnName("depth_start"); + + b.Property("IdFeedRegulator") + .HasColumnType("smallint") + .HasColumnName("id_feed_regulator"); + + b.Property("IdTelemetry") + .HasColumnType("integer") + .HasColumnName("id_telemetry"); + + b.HasKey("Id"); + + b.HasIndex("IdTelemetry"); + + b.ToTable("t_limiting_parameter", t => + { + t.HasComment("Ограничения по параметрам телеметрии"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.Manual", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DateDownload") + .HasColumnType("timestamp with time zone") + .HasColumnName("date_download") + .HasComment("Дата загрузки"); + + b.Property("IdAuthor") + .HasColumnType("integer") + .HasColumnName("id_author") + .HasComment("Id автора"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("Id категории файла"); + + b.Property("IdDirectory") + .HasColumnType("integer") + .HasColumnName("id_directory") + .HasComment("Id директории"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdDirectory"); + + b.ToTable("t_manual", t => + { + t.HasComment("Инструкции"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Manuals.ManualDirectory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("IdParent") + .HasColumnType("integer") + .HasColumnName("id_parent") + .HasComment("Id родительской директории"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название"); + + b.HasKey("Id"); + + b.HasIndex("IdParent"); + + b.ToTable("t_manual_directory", t => + { + t.HasComment("Директория для инструкций"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Measure", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Data") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("data") + .HasComment("Данные таблицы последних данных"); + + b.Property("IdCategory") + .HasColumnType("integer") + .HasColumnName("id_category") + .HasComment("id категории"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("id скважины"); + + b.Property("IsDeleted") + .HasColumnType("boolean") + .HasColumnName("is_deleted") + .HasComment("Пометка удаленным"); + + b.Property("Timestamp") + .HasColumnType("timestamp with time zone") + .HasColumnName("timestamp") + .HasComment("время добавления"); + + b.HasKey("Id"); + + b.HasIndex("IdCategory"); + + b.HasIndex("IdWell"); + + b.ToTable("t_measure", t => + { + t.HasComment("Таблица c данными для вкладки 'Последние данные'"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.MeasureCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name") + .HasComment("Название категории"); + + b.Property("ShortName") + .HasColumnType("text") + .HasColumnName("short_name") + .HasComment("Короткое название категории"); + + b.HasKey("Id"); + + b.ToTable("t_measure_category", t => + { + t.HasComment("Категория последних данных"); + }); + + b.HasData( + new + { + Id = 1, + Name = "Показатели бурового раствора", + ShortName = "Раствор" + }, + new + { + Id = 2, + Name = "Шламограмма", + ShortName = "Шламограмма" + }, + new + { + Id = 3, + Name = "ННБ", + ShortName = "ННБ" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Notification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("IdNotificationCategory") + .HasColumnType("integer") + .HasColumnName("id_notification_category") + .HasComment("Id категории уведомления"); + + b.Property("IdTransportType") + .HasColumnType("integer") + .HasColumnName("id_transport_type") + .HasComment("Id типа доставки уведомления"); + + b.Property("IdUser") + .HasColumnType("integer") + .HasColumnName("id_user") + .HasComment("Id получателя"); + + b.Property("Message") + .IsRequired() + .HasColumnType("text") + .HasColumnName("message") + .HasComment("Сообщение уведомления"); + + b.Property("ReadDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("read_date") + .HasComment("Дата прочтения уведомления"); + + b.Property("RegistrationDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("registration_date") + .HasComment("Дата регистрации уведомления"); + + b.Property("SentDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("sent_date") + .HasComment("Дата отправки уведомления"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text") + .HasColumnName("title") + .HasComment("Заголовок уведомления"); + + b.HasKey("Id"); + + b.HasIndex("IdNotificationCategory"); + + b.HasIndex("IdUser"); + + b.ToTable("t_notification", t => + { + t.HasComment("Уведомления"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.NotificationCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.HasKey("Id"); + + b.ToTable("t_notification_category", t => + { + t.HasComment("Категории уведомлений"); + }); + + b.HasData( + new + { + Id = 1, + Name = "Системные уведомления" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.OperationValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DepthEnd") + .HasColumnType("double precision") + .HasColumnName("depth_end") + .HasComment("Конечная глубина"); + + b.Property("DepthStart") + .HasColumnType("double precision") + .HasColumnName("depth_start") + .HasComment("Старотовая глубина"); + + b.Property("IdOperationCategory") + .HasColumnType("integer") + .HasColumnName("id_operation_category") + .HasComment("Ид категории операции"); + + b.Property("IdWell") + .HasColumnType("integer") + .HasColumnName("id_well") + .HasComment("Ид скважины"); + + b.Property("StandardValue") + .HasColumnType("double precision") + .HasColumnName("standard_value") + .HasComment("Нормативный показатель"); + + b.Property("TargetValue") + .HasColumnType("double precision") + .HasColumnName("target_value") + .HasComment("Целевой показатель"); + + b.HasKey("Id"); + + b.HasIndex("IdOperationCategory"); + + b.HasIndex("IdWell"); + + b.ToTable("t_operationvalue", t => + { + t.HasComment("Целевые/нормативные показатели операции"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Description") + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("description") + .HasComment("Краткое описание"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("name") + .HasComment("Название"); + + b.HasKey("Id"); + + b.ToTable("t_permission", t => + { + t.HasComment("Разрешения на доступ к данным"); + }); + + b.HasData( + new + { + Id = 100, + Description = "Разрешение удалять админ. Кусты", + Name = "AdminCluster.delete" + }, + new + { + Id = 101, + Description = "Разрешение редактировать админ. Кусты", + Name = "AdminCluster.edit" + }, + new + { + Id = 102, + Description = "Разрешение просматривать админ. Кусты", + Name = "AdminCluster.get" + }, + new + { + Id = 103, + Description = "Разрешение удалять админ. Компании", + Name = "AdminCompany.delete" + }, + new + { + Id = 104, + Description = "Разрешение редактировать админ. Компании", + Name = "AdminCompany.edit" + }, + new + { + Id = 105, + Description = "Разрешение просматривать админ. Компании", + Name = "AdminCompany.get" + }, + new + { + Id = 106, + Description = "Разрешение удалять админ. Типы компаний", + Name = "AdminCompanyType.delete" + }, + new + { + Id = 107, + Description = "Разрешение редактировать админ. Типы компаний", + Name = "AdminCompanyType.edit" + }, + new + { + Id = 108, + Description = "Разрешение просматривать админ. Типы компаний", + Name = "AdminCompanyType.get" + }, + new + { + Id = 109, + Description = "Разрешение удалять админ. Месторождения", + Name = "AdminDeposit.delete" + }, + new + { + Id = 110, + Description = "Разрешение редактировать админ. Месторождения", + Name = "AdminDeposit.edit" + }, + new + { + Id = 111, + Description = "Разрешение просматривать админ. Месторождения", + Name = "AdminDeposit.get" + }, + new + { + Id = 112, + Description = "Разрешение удалять админ. Разрешения", + Name = "AdminPermission.delete" + }, + new + { + Id = 113, + Description = "Разрешение редактировать админ. Разрешения", + Name = "AdminPermission.edit" + }, + new + { + Id = 114, + Description = "Разрешение просматривать админ. Разрешения", + Name = "AdminPermission.get" + }, + new + { + Id = 115, + Description = "Разрешение удалять админ. Телеметрию", + Name = "AdminTelemetry.delete" + }, + new + { + Id = 116, + Description = "Разрешение редактировать админ. Телеметрию", + Name = "AdminTelemetry.edit" + }, + new + { + Id = 117, + Description = "Разрешение просматривать админ. Телеметрию", + Name = "AdminTelemetry.get" + }, + new + { + Id = 118, + Description = "Разрешение удалять админ. Пользователей", + Name = "AdminUser.delete" + }, + new + { + Id = 119, + Description = "Разрешение редактировать админ. Пользователей", + Name = "AdminUser.edit" + }, + new + { + Id = 120, + Description = "Разрешение просматривать админ. Пользователей", + Name = "AdminUser.get" + }, + new + { + Id = 121, + Description = "Разрешение удалять админ. Роли пользователей", + Name = "AdminUserRole.delete" + }, + new + { + Id = 122, + Description = "Разрешение редактировать админ. Роли пользователей", + Name = "AdminUserRole.edit" + }, + new + { + Id = 123, + Description = "Разрешение просматривать админ. Роли пользователей", + Name = "AdminUserRole.get" + }, + new + { + Id = 124, + Description = "Разрешение удалять админ. Скважины", + Name = "AdminWell.delete" + }, + new + { + Id = 125, + Description = "Разрешение редактировать админ. Скважины", + Name = "AdminWell.edit" + }, + new + { + Id = 126, + Description = "Разрешение просматривать админ. Скважины", + Name = "AdminWell.get" + }, + new + { + Id = 127, + Description = "Разрешение удалять админ. Подсистемы", + Name = "AdminSubsytem.delete" + }, + new + { + Id = 128, + Description = "Разрешение редактировать админ. Подсистемы", + Name = "AdminSubsytem.edit" + }, + new + { + Id = 129, + Description = "Разрешение просматривать админ. Подсистемы", + Name = "AdminSubsytem.get" + }, + new + { + Id = 200, + Description = "Разрешение редактировать 0", + Name = "Auth.edit" + }, + new + { + Id = 201, + Description = "Разрешение просматривать 0", + Name = "Auth.get" + }, + new + { + Id = 202, + Description = "Разрешение просматривать Кусты", + Name = "Cluster.get" + }, + new + { + Id = 203, + Description = "Разрешение просматривать Месторождения", + Name = "Deposit.get" + }, + new + { + Id = 204, + Description = "Разрешение удалять РТК", + Name = "DrillFlowChart.delete" + }, + new + { + Id = 205, + Description = "Разрешение редактировать РТК", + Name = "DrillFlowChart.edit" + }, + new + { + Id = 206, + Description = "Разрешение просматривать РТК", + Name = "DrillFlowChart.get" + }, + new + { + Id = 207, + Description = "Разрешение удалять Программу бурения", + Name = "DrillingProgram.delete" + }, + new + { + Id = 208, + Description = "Разрешение редактировать Программу бурения", + Name = "DrillingProgram.edit" + }, + new + { + Id = 209, + Description = "Разрешение просматривать Программу бурения", + Name = "DrillingProgram.get" + }, + new + { + Id = 210, + Description = "Разрешение удалять Режимы бурения", + Name = "DrillParams.delete" + }, + new + { + Id = 211, + Description = "Разрешение редактировать Режимы бурения", + Name = "DrillParams.edit" + }, + new + { + Id = 212, + Description = "Разрешение просматривать Режимы бурения", + Name = "DrillParams.get" + }, + new + { + Id = 213, + Description = "Разрешение удалять Файлы", + Name = "File.delete" + }, + new + { + Id = 214, + Description = "Разрешение редактировать Файлы", + Name = "File.edit" + }, + new + { + Id = 215, + Description = "Разрешение просматривать Файлы", + Name = "File.get" + }, + new + { + Id = 216, + Description = "Разрешение удалять Измерения", + Name = "Measure.delete" + }, + new + { + Id = 217, + Description = "Разрешение редактировать Измерения", + Name = "Measure.edit" + }, + new + { + Id = 218, + Description = "Разрешение просматривать Измерения", + Name = "Measure.get" + }, + new + { + Id = 219, + Description = "Разрешение просматривать Сообщения телеметрии", + Name = "Message.get" + }, + new + { + Id = 220, + Description = "Разрешение просматривать Статистику по операциям", + Name = "OperationStat.get" + }, + new + { + Id = 221, + Description = "Разрешение редактировать Рапорта", + Name = "Report.edit" + }, + new + { + Id = 222, + Description = "Разрешение просматривать Рапорта", + Name = "Report.get" + }, + new + { + Id = 223, + Description = "Разрешение просматривать админ. Системная статистика", + Name = "RequestTracker.get" + }, + new + { + Id = 224, + Description = "Разрешение удалять Рекомендации уставок", + Name = "Setpoints.delete" + }, + new + { + Id = 225, + Description = "Разрешение редактировать Рекомендации уставок", + Name = "Setpoints.edit" + }, + new + { + Id = 226, + Description = "Разрешение просматривать Рекомендации уставок", + Name = "Setpoints.get" + }, + new + { + Id = 227, + Description = "Разрешение редактировать Телеметрии", + Name = "Telemetry.edit" + }, + new + { + Id = 228, + Description = "Разрешение просматривать Анализ телеметрии", + Name = "TelemetryAnalytics.get" + }, + new + { + Id = 229, + Description = "Разрешение редактировать Данные телеметрии по САУБ", + Name = "TelemetryDataSaub.edit" + }, + new + { + Id = 230, + Description = "Разрешение просматривать Данные телеметрии по САУБ", + Name = "TelemetryDataSaub.get" + }, + new + { + Id = 231, + Description = "Разрешение редактировать Данные телеметрии по SpinMaster", + Name = "TelemetryDataSpin.edit" + }, + new + { + Id = 232, + Description = "Разрешение просматривать Данные телеметрии по SpinMaster", + Name = "TelemetryDataSpin.get" + }, + new + { + Id = 233, + Description = "Разрешение редактировать Скважины", + Name = "Well.edit" + }, + new + { + Id = 234, + Description = "Разрешение просматривать Скважины", + Name = "Well.get" + }, + new + { + Id = 235, + Description = "Разрешение редактировать Композитные скважины", + Name = "WellComposite.edit" + }, + new + { + Id = 236, + Description = "Разрешение просматривать Композитные скважины", + Name = "WellComposite.get" + }, + new + { + Id = 237, + Description = "Разрешение удалять Операции по скважинам", + Name = "WellOperation.delete" + }, + new + { + Id = 238, + Description = "Разрешение редактировать Операции по скважинам", + Name = "WellOperation.edit" + }, + new + { + Id = 239, + Description = "Разрешение просматривать Операции по скважинам", + Name = "WellOperation.get" + }, + new + { + Id = 240, + Description = "Разрешение редактировать Файлы категории 1 (Растворный сервис)", + Name = "File.edit1" + }, + new + { + Id = 241, + Description = "Разрешение редактировать Файлы категории 2 (Цементирование)", + Name = "File.edit2" + }, + new + { + Id = 242, + Description = "Разрешение редактировать Файлы категории 3 (ННБ)", + Name = "File.edit3" + }, + new + { + Id = 243, + Description = "Разрешение редактировать Файлы категории 4 (ГТИ)", + Name = "File.edit4" + }, + new + { + Id = 244, + Description = "Разрешение редактировать Файлы категории 5 (Документы по скважине)", + Name = "File.edit5" + }, + new + { + Id = 245, + Description = "Разрешение редактировать Файлы категории 6 (Супервайзер)", + Name = "File.edit6" + }, + new + { + Id = 246, + Description = "Разрешение редактировать Файлы категории 7 (Мастер)", + Name = "File.edit7" + }, + new + { + Id = 247, + Description = "Разрешение редактировать Файлы категории 8 (Долотный сервис)", + Name = "File.edit8" + }, + new + { + Id = 248, + Description = "Разрешение редактировать Файлы категории 9 (Буровой подрядчик)", + Name = "File.edit9" + }, + new + { + Id = 249, + Description = "Разрешение редактировать Файлы категории 10 (Сервис по заканчиванию скважины)", + Name = "File.edit10" + }, + new + { + Id = 250, + Description = "Разрешение редактировать Файлы категории 11 (Рапорт)", + Name = "File.edit11" + }, + new + { + Id = 251, + Description = "Разрешение редактировать Файлы категории 12", + Name = "File.edit12" + }, + new + { + Id = 252, + Description = "Разрешение редактировать Файлы категории 12", + Name = "File.edit13" + }, + new + { + Id = 253, + Description = "Разрешение редактировать Файлы категории 13", + Name = "File.edit14" + }, + new + { + Id = 254, + Description = "Разрешение редактировать Файлы категории 14", + Name = "File.edit15" + }, + new + { + Id = 255, + Description = "Разрешение редактировать Файлы категории 15", + Name = "File.edit16" + }, + new + { + Id = 256, + Description = "Разрешение редактировать Файлы категории 16", + Name = "File.edit17" + }, + new + { + Id = 257, + Description = "Разрешение редактировать Файлы категории 17", + Name = "File.edit18" + }, + new + { + Id = 258, + Description = "Разрешение редактировать Файлы категории 18", + Name = "File.edit19" + }, + new + { + Id = 259, + Description = "Разрешение редактировать Файлы категории 19", + Name = "File.edit20" + }, + new + { + Id = 260, + Description = "Разрешение редактировать Файлы категории 20", + Name = "File.edit21" + }, + new + { + Id = 261, + Description = "Разрешение редактировать Файлы категории 21", + Name = "File.edit22" + }, + new + { + Id = 262, + Description = "Разрешение редактировать Файлы категории 22", + Name = "File.edit23" + }, + new + { + Id = 263, + Description = "Разрешение редактировать Файлы категории 23", + Name = "File.edit24" + }, + new + { + Id = 264, + Description = "Разрешение редактировать Файлы категории 24", + Name = "File.edit25" + }, + new + { + Id = 265, + Description = "Разрешение редактировать Файлы категории 25", + Name = "File.edit26" + }, + new + { + Id = 266, + Description = "Разрешение редактировать Файлы категории 26", + Name = "File.edit27" + }, + new + { + Id = 267, + Description = "Разрешение редактировать Файлы категории 27", + Name = "File.edit28" + }, + new + { + Id = 268, + Description = "Разрешение редактировать Файлы категории 28", + Name = "File.edit29" + }, + new + { + Id = 269, + Description = "Разрешение редактировать Файлы категории 29", + Name = "File.edit30" + }, + new + { + Id = 380, + Description = "Разрешение просматривать список бурильщиков", + Name = "Driller.get" + }, + new + { + Id = 381, + Description = "Разрешение редактировать бурильщика", + Name = "Driller.edit" + }, + new + { + Id = 382, + Description = "Разрешение удалять бурильщик", + Name = "Driller.delete" + }, + new + { + Id = 383, + Description = "Разрешение просматривать графики бурильщиков", + Name = "Schedule.get" + }, + new + { + Id = 384, + Description = "Разрешение редактировать график бурильщика", + Name = "Schedule.edit" + }, + new + { + Id = 385, + Description = "Разрешение удалять график бурильщика", + Name = "Schedule.delete" + }, + new + { + Id = 386, + Description = "Разрешение просматривать суточный рапорт", + Name = "DailyReport.get" + }, + new + { + Id = 387, + Description = "Разрешение редактировать суточный рапорт", + Name = "DailyReport.edit" + }, + new + { + Id = 388, + Description = "Разрешение просматривать авто. определенные операции", + Name = "DetectedOperation.get" + }, + new + { + Id = 389, + Description = "Разрешение просматривать целевые значения", + Name = "OperationValue.get" + }, + new + { + Id = 390, + Description = "Разрешение редактировать целевые значения", + Name = "OperationValue.edit" + }, + new + { + Id = 391, + Description = "Разрешение удалять целевые значения", + Name = "OperationValue.delete" + }, + new + { + Id = 400, + Description = "Разрешение просматривать инфо по wits параметрам", + Name = "WitsInfo.get" + }, + new + { + Id = 401, + Description = "Разрешение просматривать WITS record 1", + Name = "WitsRecord1.get" + }, + new + { + Id = 407, + Description = "Разрешение просматривать WITS record 7", + Name = "WitsRecord7.get" + }, + new + { + Id = 408, + Description = "Разрешение просматривать WITS record 8", + Name = "WitsRecord8.get" + }, + new + { + Id = 450, + Description = "Разрешение просматривать WITS record 50", + Name = "WitsRecord50.get" + }, + new + { + Id = 460, + Description = "Разрешение просматривать WITS record 60", + Name = "WitsRecord60.get" + }, + new + { + Id = 461, + Description = "Разрешение просматривать WITS record 61", + Name = "WitsRecord61.get" + }, + new + { + Id = 500, + Description = "Разрешение удалять Категорий документов файлов", + Name = "FileCategory.delete" + }, + new + { + Id = 501, + Description = "Разрешение редактировать Категорий документов файлов", + Name = "FileCategory.edit" + }, + new + { + Id = 502, + Description = "Разрешение просматривать Категорий документов файлов", + Name = "FileCategory.get" + }, + new + { + Id = 503, + Description = "Разрешение удалять Дело скважины", + Name = "WellFinalDocuments.delete" + }, + new + { + Id = 504, + Description = "Разрешение редактировать Дело скважины", + Name = "WellFinalDocuments.edit" + }, + new + { + Id = 505, + Description = "Разрешение просматривать Дело скважины", + Name = "WellFinalDocuments.get" + }, + new + { + Id = 506, + Description = "Разрешение редактировать ответственных за загрузку файла Дело скважины", + Name = "WellFinalDocuments.editPublisher" + }, + new + { + Id = 507, + Description = "Разрешение просматривать наработка талевого каната", + Name = "TelemetryWirelineRunOut.get" + }, + new + { + Id = 510, + Description = "Разрешение просматривать плановая траектория", + Name = "PlannedTrajectory.get" + }, + new + { + Id = 511, + Description = "Разрешение редактировать плановая траектория", + Name = "PlannedTrajectory.edit" + }, + new + { + Id = 512, + Description = "Разрешение удалять плановая траектория", + Name = "PlannedTrajectory.delete" + }, + new + { + Id = 516, + Description = "Разрешение просматривать статистику вопросов", + Name = "FaqStatistics.get" + }, + new + { + Id = 517, + Description = "Разрешение редактировать вопрос", + Name = "FaqStatistics.edit" + }, + new + { + Id = 518, + Description = "Разрешение удалять вопрос", + Name = "FaqStatistics.delete" + }, + new + { + Id = 519, + Description = "Разрешение просматривать список контактов", + Name = "WellContact.get" + }, + new + { + Id = 520, + Description = "Разрешение редактировать список контактов", + Name = "WellContact.edit" + }, + new + { + Id = 521, + Description = "Разрешить создание справок по страницам", + Name = "HelpPage.edit" + }, + new + { + Id = 522, + Description = "Разрешить удаление всех настроек пользователя", + Name = "UserSettings.delete" + }, + new + { + Id = 523, + Description = "Разрешить редактирование инструкций", + Name = "Manual.edit" + }, + new + { + Id = 524, + Description = "Разрешить получение инструкций", + Name = "Manual.get" + }, + new + { + Id = 525, + Description = "Разрешение на редактирование РТК у завершенной скважины", + Name = "ProcessMap.editCompletedWell" + }, + new + { + Id = 526, + Description = "Разрешение на редактирование операций у завершенной скважины", + Name = "WellOperation.editCompletedWell" + }, + new + { + Id = 527, + Description = "Разрешение на удаление инструкций", + Name = "Manual.delete" + }, + new + { + Id = 528, + Description = "Разрешение на удаление контакта", + Name = "WellContact.delete" + }, + new + { + Id = 530, + Description = "Разрешение на редактирование плановой конструкции скважины", + Name = "WellSectionPlan.edit" + }, + new + { + Id = 531, + Description = "Разрешение на удаление плановой конструкции скважины", + Name = "WellSectionPlan.delete" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.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 = 4000, + IdParent = 3000, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "КНБК" + }, + new + { + Id = 4001, + IdParent = 3000, + KeyValueName = "dT", + KeyValueUnits = "м/ч", + Name = "Механическое. бурение" + }, + new + { + Id = 4002, + IdParent = 3000, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Статический замер" + }, + new + { + Id = 4003, + IdParent = 3000, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Нормализация диаметра скважины" + }, + new + { + Id = 4004, + IdParent = 3000, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наращивание" + }, + new + { + Id = 4005, + IdParent = 3001, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 4006, + IdParent = 3002, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск обсадной колонны" + }, + new + { + Id = 4018, + IdParent = 3002, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Крепление" + }, + new + { + Id = 4007, + IdParent = 3002, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Цементирование" + }, + new + { + Id = 4008, + IdParent = 3002, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные работы при креплении" + }, + new + { + Id = 4009, + IdParent = 3003, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка/разборка приборов ГИС" + }, + new + { + Id = 4010, + IdParent = 3003, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 4011, + IdParent = 3003, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ГИС" + }, + new + { + Id = 4012, + IdParent = 3004, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка, ОБР" + }, + new + { + Id = 4013, + IdParent = 3004, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные работы" + }, + new + { + Id = 4014, + IdParent = 3005, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт оборудования" + }, + new + { + Id = 4015, + IdParent = 3005, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Аварийные работы" + }, + new + { + Id = 4016, + IdParent = 3005, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Осложнение" + }, + new + { + Id = 4017, + IdParent = 3005, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Незаложенные в ГГД операции" + }, + new + { + Id = 5000, + IdParent = 4000, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разборка КНБК" + }, + new + { + Id = 5001, + IdParent = 4000, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка КНБК" + }, + new + { + Id = 5002, + IdParent = 4001, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение слайдом" + }, + new + { + Id = 5003, + IdParent = 4001, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение ротором" + }, + new + { + Id = 5004, + IdParent = 4002, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Замер ЗТС (запись MWD)" + }, + new + { + Id = 5005, + IdParent = 4003, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка перед наращиванием" + }, + new + { + Id = 5006, + IdParent = 4003, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка во время бурения" + }, + new + { + Id = 5007, + IdParent = 4003, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка" + }, + new + { + Id = 5008, + IdParent = 4003, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка во время бурения" + }, + new + { + Id = 5009, + IdParent = 4003, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка перед наращиванием" + }, + new + { + Id = 5010, + IdParent = 4004, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наращивание" + }, + new + { + Id = 5011, + IdParent = 4004, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Удержание в клиньях" + }, + new + { + Id = 5012, + IdParent = 4005, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем инструмента" + }, + new + { + Id = 5013, + IdParent = 4005, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем КНБК" + }, + new + { + Id = 5014, + IdParent = 4005, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск инструмента" + }, + new + { + Id = 5015, + IdParent = 4005, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск КНБК" + }, + new + { + Id = 5016, + IdParent = 4006, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка при спуске ОК" + }, + new + { + Id = 5017, + IdParent = 4006, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск ОК" + }, + new + { + Id = 5018, + IdParent = 4007, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ОЗЦ" + }, + new + { + Id = 5019, + IdParent = 4007, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Цементирование" + }, + new + { + Id = 5020, + IdParent = 4008, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка БИ" + }, + new + { + Id = 5021, + IdParent = 4008, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка ОК" + }, + new + { + Id = 5022, + IdParent = 4008, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при спуске ОК" + }, + new + { + Id = 5023, + IdParent = 4008, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при цементировании" + }, + new + { + Id = 5024, + IdParent = 4009, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разборка комплекса приборов ГИС" + }, + new + { + Id = 5025, + IdParent = 4009, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка комплекса приборов ГИС" + }, + new + { + Id = 5026, + IdParent = 4010, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем приборов ГИС (на трубах)" + }, + new + { + Id = 5027, + IdParent = 4010, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск приборов ГИС (на трубах)" + }, + new + { + Id = 5028, + IdParent = 4011, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на жестком кабеле" + }, + new + { + Id = 5029, + IdParent = 4011, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на кабеле" + }, + new + { + Id = 5030, + IdParent = 4011, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на трубах" + }, + new + { + Id = 5031, + IdParent = 4012, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Закачка/прокачка пачки" + }, + new + { + Id = 5032, + IdParent = 4012, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обработка БР" + }, + new + { + Id = 5033, + IdParent = 4012, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование ТС при бурении" + }, + new + { + Id = 5034, + IdParent = 4012, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перезапись гаммы-каротажа" + }, + new + { + Id = 5035, + IdParent = 4012, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Приготовление БР" + }, + new + { + Id = 5036, + IdParent = 4012, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка" + }, + new + { + Id = 5037, + IdParent = 4012, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разбуривание тех.оснастки" + }, + new + { + Id = 5038, + IdParent = 4012, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск инструмента с проработкой" + }, + new + { + Id = 5039, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ВМР" + }, + new + { + Id = 5040, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Демонтаж ПВО" + }, + new + { + Id = 5041, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Долив затруба при подъёме" + }, + new + { + Id = 5042, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Монтаж ПВО" + }, + new + { + Id = 5043, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наработка жёлоба" + }, + new + { + Id = 5044, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обвязка устья с циркуляционной системой" + }, + new + { + Id = 5045, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Оборудование устья" + }, + new + { + Id = 5046, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка ПВО" + }, + new + { + Id = 5047, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перемонтаж ПВО " + }, + new + { + Id = 5048, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перетяжка талевого каната" + }, + new + { + Id = 5049, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при сборке КНБК" + }, + new + { + Id = 5050, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Полная замена талевого каната" + }, + new + { + Id = 5051, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПР перед забуркой направления" + }, + new + { + Id = 5052, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Продувка манифольда" + }, + new + { + Id = 5053, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Срезка" + }, + new + { + Id = 5054, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Тайм-дриллинг" + }, + new + { + Id = 5055, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Тех.отстой" + }, + new + { + Id = 5056, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Учебная тревога \"Выброс\"" + }, + new + { + Id = 5057, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Чистка ЦСГО/емкостного блока" + }, + new + { + Id = 5058, + IdParent = 4014, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт бурового оборудования" + }, + new + { + Id = 5059, + IdParent = 4015, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ловильные работы" + }, + new + { + Id = 5060, + IdParent = 4015, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ожидание" + }, + new + { + Id = 5061, + IdParent = 4015, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Определение места прихвата и ЛМ" + }, + new + { + Id = 5062, + IdParent = 4015, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Работа яссом" + }, + new + { + Id = 5063, + IdParent = 4015, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Расхаживание" + }, + new + { + Id = 5064, + IdParent = 4015, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - колокол" + }, + new + { + Id = 5065, + IdParent = 4015, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - метчик" + }, + new + { + Id = 5066, + IdParent = 4015, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - овершот" + }, + new + { + Id = 5067, + IdParent = 4015, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - труболовка" + }, + new + { + Id = 5068, + IdParent = 4015, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Торпедирование (встряхивание)" + }, + new + { + Id = 5069, + IdParent = 4015, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Торпедирование (отстрел)" + }, + new + { + Id = 5070, + IdParent = 4015, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Установка ванн" + }, + new + { + Id = 5071, + IdParent = 4015, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Фрезеровка" + }, + new + { + Id = 5072, + IdParent = 4016, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Контролируемое ГНВП" + }, + new + { + Id = 5073, + IdParent = 4016, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Поглощение" + }, + new + { + Id = 5074, + IdParent = 4016, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сальникообразование" + }, + new + { + Id = 5075, + IdParent = 4016, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Утяжеление БР" + }, + new + { + Id = 5076, + IdParent = 4017, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "НПВ / прочее" + }, + new + { + Id = 5077, + IdParent = 4017, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обработка раствора (несоответствие параметров)" + }, + new + { + Id = 5078, + IdParent = 4017, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "подъем ОК" + }, + new + { + Id = 5079, + IdParent = 4017, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ревизия КНБК/инструмента/ЗТС" + }, + new + { + Id = 5082, + IdParent = 4000, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка устройства ориентирования КО" + }, + new + { + Id = 5083, + IdParent = 4003, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка принудительная" + }, + new + { + Id = 5084, + IdParent = 4005, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка подъем БИ, продувка" + }, + new + { + Id = 5085, + IdParent = 4005, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск бурильного инструмента со сборкой с мостков" + }, + new + { + Id = 5086, + IdParent = 4005, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем БИ с выбросом на мостки" + }, + new + { + Id = 5087, + IdParent = 4005, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск БИ со сборкой с мостков" + }, + new + { + Id = 5088, + IdParent = 4005, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка и спуск ТБТ" + }, + new + { + Id = 5089, + IdParent = 4005, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск КО на транспортной колонне" + }, + new + { + Id = 5090, + IdParent = 4008, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Отворот допускной трубы" + }, + new + { + Id = 5091, + IdParent = 4008, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Активация подвески, опрессовка" + }, + new + { + Id = 5092, + IdParent = 4008, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Монтаж, опрессовка ФА" + }, + new + { + Id = 5093, + IdParent = 4008, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка хвостовика 114мм (согласно схеме)" + }, + new + { + Id = 5094, + IdParent = 4008, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР к спуску УЭЦН" + }, + new + { + Id = 5095, + IdParent = 4008, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Активация подвески (потайной колонны, хвостовика)" + }, + new + { + Id = 5096, + IdParent = 4008, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонирование перед спуском" + }, + new + { + Id = 5097, + IdParent = 4012, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка - перевод скважины на новый раствор" + }, + new + { + Id = 5098, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка БИ с мостков на подсвечник" + }, + new + { + Id = 5099, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подготовка ствола скважины. Перезапись ГК в интервале установки КО." + }, + new + { + Id = 5100, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Смена рабочего переводника ВСП" + }, + new + { + Id = 5101, + IdParent = 4014, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт" + }, + new + { + Id = 5102, + IdParent = 4018, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск пакера" + }, + new + { + Id = 5103, + IdParent = 4011, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Запись гамма-каратожа" + }, + new + { + Id = 5104, + IdParent = 4013, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонирование спуск БИ" + }, + new + { + Id = 5105, + IdParent = 4018, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка клин-отклонителя" + }, + new + { + Id = 5106, + IdParent = 4018, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование и посадка клина-отклонителя" + }, + new + { + Id = 5107, + IdParent = 4018, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Протяжка подъемного патрубка подвески" + }, + new + { + Id = 5108, + IdParent = 4018, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем клина-отклонителя" + }, + new + { + Id = 5109, + IdParent = 4018, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Стыковка стингера с хвостовиком основного ствола" + }, + new + { + Id = 5110, + IdParent = 4018, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование и установка стыковочного узла хвостовика" + }, + new + { + Id = 5111, + IdParent = 4001, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение с отбором керна" + }, + new + { + Id = 5112, + IdParent = 4018, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Работа пакером в обсадной колонне" + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.WellSectionType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)") + .HasColumnName("caption") + .HasComment("Название"); + + b.Property("Order") + .HasColumnType("real") + .HasColumnName("order") + .HasComment("Порядок"); + + b.HasKey("Id"); + + b.ToTable("t_well_section_type", 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/20240415043251_Update_WellOperationName.cs b/AsbCloudDb/Migrations/20240415043251_Update_WellOperationName.cs new file mode 100644 index 00000000..ddb3c3ea --- /dev/null +++ b/AsbCloudDb/Migrations/20240415043251_Update_WellOperationName.cs @@ -0,0 +1,32 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace AsbCloudDb.Migrations +{ + /// + public partial class Update_WellOperationName : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5089, + column: "name", + value: "Спуск КО на транспортной колонне"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.UpdateData( + table: "t_well_operation_category", + keyColumn: "id", + keyValue: 5089, + column: "name", + value: "Спуск КО на транспотрной колонне"); + } + } +} diff --git a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs index 640170a2..2267e5f4 100644 --- a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs +++ b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs @@ -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("Дата последнего обновления"); @@ -1418,7 +1418,7 @@ namespace AsbCloudDb.Migrations NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - b.Property("DateDownload") + b.Property("DateDownload") .HasColumnType("timestamp with time zone") .HasColumnName("date_download") .HasComment("Дата загрузки"); @@ -1613,17 +1613,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("Дата отправки уведомления"); @@ -7136,7 +7136,7 @@ namespace AsbCloudDb.Migrations IdParent = 4005, KeyValueName = "dT", KeyValueUnits = "мин", - Name = "Спуск КО на транспотрной колонне" + Name = "Спуск КО на транспортной колонне" }, new { diff --git a/AsbCloudDb/Model/WellOperationCategory.cs b/AsbCloudDb/Model/WellOperationCategory.cs index 5014ac14..9fb6ce43 100644 --- a/AsbCloudDb/Model/WellOperationCategory.cs +++ b/AsbCloudDb/Model/WellOperationCategory.cs @@ -358,7 +358,7 @@ namespace AsbCloudDb.Model new () {Id = 5086, IdParent = 4005, Name = "Подъем БИ с выбросом на мостки", KeyValueName = "dT", KeyValueUnits = "мин" }, new () {Id = 5087, IdParent = 4005, Name = "Спуск БИ со сборкой с мостков", KeyValueName = "dT", KeyValueUnits = "мин" }, new () {Id = 5088, IdParent = 4005, Name = "Сборка и спуск ТБТ", KeyValueName = "dT", KeyValueUnits = "мин" }, - new () {Id = 5089, IdParent = 4005, Name = "Спуск КО на транспотрной колонне", KeyValueName = "dT", KeyValueUnits = "мин" }, + new () {Id = 5089, IdParent = 4005, Name = "Спуск КО на транспортной колонне", KeyValueName = "dT", KeyValueUnits = "мин" }, new () {Id = 5090, IdParent = 4008, Name = "Отворот допускной трубы", KeyValueName = "dT", KeyValueUnits = "мин" }, new () {Id = 5091, IdParent = 4008, Name = "Активация подвески, опрессовка", KeyValueName = "dT", KeyValueUnits = "мин" }, new () {Id = 5092, IdParent = 4008, Name = "Монтаж, опрессовка ФА", KeyValueName = "dT", KeyValueUnits = "мин" }, diff --git a/AsbCloudInfrastructure/Services/WellOperations/Templates/WellOperationFactTemplate.xlsx b/AsbCloudInfrastructure/Services/WellOperations/Templates/WellOperationFactTemplate.xlsx index 065dc2070b20c533bc426b21237f4e4cf062c581..cf75fde6740a1553b153ea1c0e2d88624518be73 100644 GIT binary patch literal 45635 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
  • +Q?PIA?0+D9Lh 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 literal 45673 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%0AtJkynKDVw^qTIomKcf7n`I8EN-u2v3O%o3olI5c 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 z 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 : ExcelWellRelatedParser : ExcelWellRelatedParser Date: Mon, 15 Apr 2024 08:38:41 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=20=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D0=BE=D0=B4=D0=B0=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BD=D0=B5=D1=81=D0=BA=D0=BE=D0=BB?= =?UTF-8?q?=D1=8C=D0=BA=D0=B8=D1=85=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D0=B5?= =?UTF-8?q?=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AsbCloudInfrastructure/Repository/CrudRepositoryBase.cs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/AsbCloudInfrastructure/Repository/CrudRepositoryBase.cs b/AsbCloudInfrastructure/Repository/CrudRepositoryBase.cs index 900e181c..944dabd5 100644 --- a/AsbCloudInfrastructure/Repository/CrudRepositoryBase.cs +++ b/AsbCloudInfrastructure/Repository/CrudRepositoryBase.cs @@ -142,11 +142,9 @@ namespace AsbCloudInfrastructure.Repository if (ids.Length != existingEntitiesCount) throw new ArgumentInvalidException(nameof(dtos), "Все записи должны существовать в БД"); - var entities = dtos.Select(Convert); - var entries = entities.Select(entity => dbSet.Update(entity)).Cast().ToList(); - var affected = await dbContext.SaveChangesAsync(token); - entries.ForEach(e => e.State = EntityState.Detached); - return affected; + var entities = dbContext.Set().Where(e => ids.Contains(e.Id)); + dbContext.Set().UpdateRange(entities); + return await dbContext.SaveChangesAsync(token); } ///