diff --git a/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanAntiCrashRotationDto.cs b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanAntiCrashRotationDto.cs new file mode 100644 index 00000000..32c6e9a6 --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanAntiCrashRotationDto.cs @@ -0,0 +1,33 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Functions; + +/// +/// РТК план противоаварийное вращение +/// +public class ProcessMapPlanAntiCrashRotationDto : ProcessMapPlanBaseDto +{ + /// + /// Минимальные обороты ВСП, об/мин + /// + [Range(0.0, 250.0, ErrorMessage = "Минимальные обороты ВСП, об/мин., должно быть в пределах от 0 до 250")] + public double TopDriveRpmMin { get; set; } + + /// + /// Минимальный расход для запуска оборотов ВСП, л/сек + /// + [Range(0.0, 100.0, ErrorMessage = "Минимальный расход для запуска оборотов ВСП, л/сек., должно быть в пределах от 0 до 100")] + public double TopDriveStartMinFlowRate { get; set; } + + /// + /// Максимально допустимый момент на ВСП при противоаварийном вращении, кН*м + /// + [Range(1.0, 35.0, ErrorMessage = "Максимально допустимый момент на ВСП при противоаварийном вращении, кН*м., должно быть в пределах от 1 до 35")] + public double TopDriveTorqueMax { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string Note { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanAutoHoldTFDto.cs b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanAutoHoldTFDto.cs new file mode 100644 index 00000000..37da8dd5 --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanAutoHoldTFDto.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Functions; + +/// +/// РТК план авто удержание TF +/// +public class ProcessMapPlanAutoHoldTFDto : ProcessMapPlanBaseDto +{ + /// + /// Зенитный угол, градусы + /// + [Range(0.0, 100.0, ErrorMessage = "Зенитный угол, градусы, должно быть в пределах от 0 до 100")] + public double ZenithAngle { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string Note { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanDamperDto.cs b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanDamperDto.cs new file mode 100644 index 00000000..2f271f02 --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanDamperDto.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Functions; + +/// +/// РТК план демпфер +/// +public class ProcessMapPlanDamperDto : ProcessMapPlanBaseDto +{ + /// + /// StickSlip + /// + [Range(0.0, 1000.0, ErrorMessage = "StickSlip, должно быть в пределах от 0 до 1000")] + public double StickSlip { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string Note { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanDrillTestDto.cs b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanDrillTestDto.cs new file mode 100644 index 00000000..af7139a5 --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanDrillTestDto.cs @@ -0,0 +1,45 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Functions; + +/// +/// РТК план дрил тест +/// +public class ProcessMapPlanDrillTestDto : ProcessMapPlanBaseDto +{ + /// + /// Нагрузка минимальная, т + /// + [Range(1.0, 30.0, ErrorMessage = "Нагрузка минимальная, т., должно быть в пределах от 1 до 30")] + public double WeightOnBitMin { get; set; } + + /// + /// Количество шагов по нагрузке + /// + [Range(1, 5, ErrorMessage = "Количество шагов по нагрузке, должно быть в пределах от 1 до 5")] + public int WeightOnBitStepsCount { get; set; } + + /// + /// Минимальные обороты на ВСП, об/мин. + /// + [Range(5, 200, ErrorMessage = "Минимальные обороты на ВСП, об/мин., должно быть в пределах от 5 до 200")] + public int RpmMin { get; set; } + + /// + /// Количество шагов оборотов на ВСП, шт. + /// + [Range(1, 5, ErrorMessage = "Количество шагов оборотов на ВСП, шт., должно быть в пределах от 1 до 5")] + public int RpmStepsCount { get; set; } + + /// + /// Величина проходки шага, м. + /// + [Range(0.1, 2.0, ErrorMessage = "Величина проходки шага, м., должно быть в пределах от 0.1 до 2")] + public double LengthStep { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символа")] + public string Note { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanOscillationDto.cs b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanOscillationDto.cs new file mode 100644 index 00000000..b444d59a --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanOscillationDto.cs @@ -0,0 +1,51 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Functions; + +/// +/// РТК план осцилляция +/// +public class ProcessMapPlanOscillationDto : ProcessMapPlanBaseDto +{ + /// + /// Оптимальный угол осцилляции, градусы + /// + [Range(0.0, 6000.0, ErrorMessage = "Оптимальный угол осцилляции, градусы, должно быть в пределах от 0 до 6000")] + public double OptimalOscillationAngle { get; set; } + + /// + /// Скорость вправо, об/мин + /// + [Range(0.0, 270.0, ErrorMessage = "Скорость вправо, об/мин, должно быть в пределах от 0 до 270")] + public double RpmRight { get; set; } + + /// + /// Скорость влево, об/мин + /// + [Range(0.0, 270.0, ErrorMessage = "Скорость влево, об/мин, должно быть в пределах от 0 до 270")] + public double RpmLeft { get; set; } + + /// + /// Ограничение момента вправо, кН*м + /// + [Range(0.0, 35.0, ErrorMessage = "Ограничение момента вправо, кН*м., должно быть в пределах от 0 до 35")] + public double TorqueMaxRight { get; set; } + + /// + /// Ограничение момента влево, кН*м + /// + [Range(0.0, 35.0, ErrorMessage = "Ограничение момента влево, кН*м., должно быть в пределах от 0 до 35")] + public double TorqueMaxLeft { get; set; } + + /// + /// Режим Авто/Руч + /// + [Range(0, 1, ErrorMessage = "Режим Авто/Руч, должен быть либо 0, либо 1")] + public int Mode { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string Note { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanShockTestDto.cs b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanShockTestDto.cs new file mode 100644 index 00000000..f00b339c --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanShockTestDto.cs @@ -0,0 +1,51 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Functions; + +/// +/// РТК план shocktest +/// +public class ProcessMapPlanShockTestDto : ProcessMapPlanBaseDto +{ + /// + /// StickSlip + /// + [Range(0.0, 1000.0, ErrorMessage = "StickSlip, должно быть в пределах от 0 до 1000")] + public double StickSlip { get; set; } + + /// + /// Whirl + /// + [Range(0.0, 1000.0, ErrorMessage = "Whirl, должно быть в пределах от 0 до 1000")] + public double Whirl { get; set; } + + /// + /// Осевые вибрации + /// + [Range(0.0, 1000.0, ErrorMessage = "Осевые вибрации, должно быть в пределах от 0 до 1000")] + public double AxialVibrations { get; set; } + + /// + /// Комбинированные вибрации + /// + [Range(0.0, 1000.0, ErrorMessage = "Комбинированные вибрации, должно быть в пределах от 0 до 1000")] + public double CombinedVibrations { get; set; } + + /// + /// Нагрузка минимальная, т + /// + [Range(0.0, 30.0, ErrorMessage = "Комбинированные вибрации, должно быть в пределах от 1 до 30")] + public double WeightOnBitMin { get; set; } + + /// + /// Минимальные обороты на ВСП, об/мин. + /// + [Range(5, 200, ErrorMessage = "Минимальные обороты на ВСП, об/мин., должно быть в пределах от 5 до 200")] + public double RpmMin { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string Note { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanStaticMeasurementOutputDto.cs b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanStaticMeasurementOutputDto.cs new file mode 100644 index 00000000..9965e632 --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Functions/ProcessMapPlanStaticMeasurementOutputDto.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Functions; + +/// +/// РТК план выход статического замера +/// +public class ProcessMapPlanStaticMeasurementOutputDto : ProcessMapPlanBaseDto +{ + /// + /// Время ожидания выхода сигнала с ТМС, сек. + /// + [Range(0.0, 1800.0, ErrorMessage = "Время ожидания выхода сигнала с ТМС, сек., должно быть в пределах от 0 до 1800")] + public double SignalWaitingTime { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string Note { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanLoadCapacityDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanLoadCapacityDto.cs new file mode 100644 index 00000000..52972803 --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanLoadCapacityDto.cs @@ -0,0 +1,35 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Operations; + +/// +/// РТК план выработка нагрузки +/// +public class ProcessMapPlanLoadCapacityDto : ProcessMapPlanBaseDto +{ + /// + /// Время выработки минимальное, сек + /// + [Range(0.0, 800.0, ErrorMessage = "Время выработки минимальное, сек., должно быть в пределах от 0 до 800")] + public double TimeLoadCapacityMin { get; set; } + + /// + /// Перепад давления минимальный, атм + /// + [Range(0.1, 400.0, ErrorMessage = "Перепад давления минимальный, атм., должно быть в пределах от 0.1 до 400")] + public double DifferentialPressureMin { get; set; } + + /// + /// Нагрузка минимальная, т + /// + [Range(0.1, 99.0, ErrorMessage = "Нагрузка минимальная, т, должно быть в пределах от 0.1 до 99")] + public double WeightOnBitMin { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string Note { get; set; } = string.Empty; + + +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanOscillationAnglesDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanOscillationAnglesDto.cs new file mode 100644 index 00000000..3da9631e --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanOscillationAnglesDto.cs @@ -0,0 +1,39 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Operations; + +/// +/// РТК план определения углов осцилляции +/// +public class ProcessMapPlanOscillationAnglesDto : ProcessMapPlanBaseDto +{ + /// + /// Момент на ВСП, кН*м., Уставка + /// + [Range(0.0, 35.0, ErrorMessage = "Момент на ВСП, кН*м., Уставка, должно быть в пределах от 0 до 35")] + public double TopDriveTorque { get; set; } + + /// + /// Момент на ВСП, кН*м., Ограничение + /// + [Range(0.0, 35.0, ErrorMessage = "Момент на ВСП, кН*м., Ограничение, должно быть в пределах от 0 до 35")] + public double TopDriveTorqueMax { get; set; } + + /// + /// Обороты на ВСП, об/мин., Уставка + /// + [Range(0.0, 270.0, ErrorMessage = "Обороты на ВСП, об/мин., Уставка, должно быть в пределах от 0 до 270")] + public double Rpm { get; set; } + + /// + /// Обороты на ВСП, об/мин., Ограничение + /// + [Range(0.0, 270.0, ErrorMessage = "Обороты на ВСП, об/мин., Ограничение, должно быть в пределах от 0 до 270")] + public double RpmMax { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string Note { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanPositioningOffTheBottomDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanPositioningOffTheBottomDto.cs new file mode 100644 index 00000000..e1e58d66 --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanPositioningOffTheBottomDto.cs @@ -0,0 +1,88 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace AsbCloudApp.Data.ProcessMaps.Operations; + +/// +/// РТК план позиционирования над забоем +/// +public class ProcessMapPlanPositioningOffTheBottomDto : ProcessMapPlanBaseDto +{ + /// + /// Остановка над забоем, м. + /// + [Range(0.0, 30.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 30")] + public double StopOffTheBottom { get; set; } + + /// + /// Максимально допустимое давление, атм. + /// + [Range(0.0, 400.0, ErrorMessage = "Максимально допустимое давление, атм., должно быть в пределах от 0 до 400")] + public double PressureMax { get; set; } + + /// + /// Перепад давления уставка, атм. + /// + [Range(0.0, 60.0, ErrorMessage = "Перепад давления уставка, атм., должно быть в пределах от 0 до 60")] + public double DifferentialPressure { get; set; } + + /// + /// Затяжка, т. + /// + [Range(0.0, 20.0, ErrorMessage = "Затяжка, т., должно быть в пределах от 0 до 20")] + public double Tight { get; set; } + + /// + /// Посадка, т. + /// + [Range(0.0, 20.0, ErrorMessage = "Посадка, т., должно быть в пределах от 0 до 20")] + public double SlackingOff { get; set; } + + /// + /// Максимально допустимый момент, кН*м. + /// + [Range(0.0, 35.0, ErrorMessage = "Максимально допустимый момент, кН*м., должно быть в пределах от 0 до 35")] + public double TorqueMax { get; set; } + + /// + /// Скорость вверх, м/ч. + /// + [Range(0.0, 999.0, ErrorMessage = "Скорость вверх, м/ч., должно быть в пределах от 0 до 999")] + public double RopUp { get; set; } + + /// + /// Скорость вниз, м/ч. + /// + [Range(0.0, 999.0, ErrorMessage = "Скорость вниз, м/ч., должно быть в пределах от 0 до 999")] + public double RopDown { get; set; } + + /// + /// Обороты вверх, об/мин. + /// + [Range(0.0, 270.0, ErrorMessage = "Обороты вверх, об/мин., должно быть в пределах от 0 до 270")] + public double RpmUp { get; set; } + + /// + /// Обороты вниз, об/мин. + /// + [Range(0.0, 270.0, ErrorMessage = "Обороты вниз, об/мин., должно быть в пределах от 0 до 270")] + public double RpmDown { get; set; } + + /// + /// Расход вверх, л/с. + /// + [Range(0.0, 100.0, ErrorMessage = "Расход вверх, л/с., должно быть в пределах от 0 до 100")] + public double FlowRateUp { get; set; } + + /// + /// Расход вниз, л/с. + /// + [Range(0.0, 100.0, ErrorMessage = "Расход вниз, л/с., должно быть в пределах от 0 до 100")] + public double FlowRateDown { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string Note { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanReamingRotorDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanReamingRotorDto.cs new file mode 100644 index 00000000..84bbfc36 --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanReamingRotorDto.cs @@ -0,0 +1,207 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Operations; + +/// +/// РТК план проработка для ротора +/// +public class ProcessMapPlanReamingRotorDto : ProcessMapPlanBaseDto +{ + /// + /// Максимально допустимое давление, атм. + /// + [Range(0.0, 400.0, ErrorMessage = "Максимально допустимое давление, атм., должно быть в пределах от 0 до 400")] + public double PressureMax { get; set; } + + /// + /// Перепад давления уставка, атм. + /// + [Range(0.0, 60.0, ErrorMessage = "Перепад давления уставка, атм., должно быть в пределах от 0 до 60")] + public double DifferentialPressure { get; set; } + + /// + /// Затяжка, т. + /// + [Range(0.0, 20.0, ErrorMessage = "Затяжка, т., должно быть в пределах от 0 до 20")] + public double Tight { get; set; } + + /// + /// Посадка, т. + /// + [Range(0.0, 20.0, ErrorMessage = "Посадка, т., должно быть в пределах от 0 до 20")] + public double SlackingOff { get; set; } + + /// + /// Максимально допустимый момент, кН*м. + /// + [Range(0.0, 35.0, ErrorMessage = "Максимально допустимый момент, кН*м., посадка, должно быть в пределах от 0 до 35")] + public double TorqueMax { get; set; } + + /// + /// Проработка 1. Количество повторений, шт. + /// + [Range(0, 99, ErrorMessage = "Проработка 1. Количество повторений, шт., должно быть в пределах от 0 до 99")] + public int Reaming1RepetitionsCount { get; set; } + + /// + /// Проработка 1, Скорость, м/ч., Вверх + /// + [Range(0.0, 999.0, ErrorMessage = "Проработка 1, Скорость, м/ч., Вверх, должно быть в пределах от 0 до 999")] + public double Reaming1RopUp { get; set; } + + /// + /// Проработка 1, Скорость, м/ч., Вниз + /// + [Range(0.0, 999.0, ErrorMessage = "Проработка 1, Скорость, м/ч., Вниз, должно быть в пределах от 0 до 999")] + public double Reaming1RopDown { get; set; } + + /// + /// Проработка 1, Обороты, об/мин., Вверх + /// + [Range(0.0, 270.0, ErrorMessage = "Проработка 1, Обороты, об/мин., Вверх, должно быть в пределах от 0 до 270")] + public double Reaming1RpmUp { get; set; } + + /// + /// Проработка 1, Обороты, об/мин., Вниз + /// + [Range(0.0, 270.0, ErrorMessage = "Проработка 1, Обороты, об/мин., Вниз, должно быть в пределах от 0 до 270")] + public double Reaming1RpmDown { get; set; } + + /// + /// Проработка 1, Расход, л/с., Вверх + /// + [Range(0.0, 100.0, ErrorMessage = "Проработка 1, Расход, л/с., Вверх, должно быть в пределах от 0 до 100")] + public double Reaming1FlowRateUp { get; set; } + + /// + /// Проработка 1, Расход, л/с., Вниз + /// + [Range(0.0, 100.0, ErrorMessage = "Проработка 1, Расход, л/с., Вниз, должно быть в пределах от 0 до 100")] + public double Reaming1FlowRateDown { get; set; } + + /// + /// Проработка 1, Интервал проработки, м. + /// + [Range(0.0, 30.0, ErrorMessage = "Проработка 1, Интервал проработки, м., должно быть в пределах от 0 до 30")] + public double Reaming1Interval { get; set; } + + /// + /// Остановка над забоем, м. + /// + [Range(0.0, 10.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 10")] + public double Reaming1StopPointOffBottom { get; set; } + + /// + /// Проработка 2, Количество повторений, шт. + /// + [Range(0, 99, ErrorMessage = "Проработка 2, Количество повторений, шт., должно быть в пределах от 0 до 99")] + public int Reaming2RepetitionsCount { get; set; } + + /// + /// Проработка 2, Скорость, м/ч., Вверх + /// + [Range(0.0, 999.0, ErrorMessage = "Проработка 2, Скорость, м/ч., Вверх, должно быть в пределах от 0 до 999")] + public double Reaming2RopUp { get; set; } + + /// + /// Проработка 2, Скорость, м/ч., Вниз + /// + [Range(0.0, 999.0, ErrorMessage = "Проработка 2, Скорость, м/ч., Вниз, должно быть в пределах от 0 до 999")] + public double Reaming2RopDown { get; set; } + + /// + /// Проработка 2, Обороты, об/мин., Вверх + /// + [Range(0.0, 270.0, ErrorMessage = "Проработка 2, Обороты, об/мин., Вверх, должно быть в пределах от 0 до 270")] + public double Reaming2RpmUp { get; set; } + + /// + /// Проработка 2, Обороты, об/мин., Вниз + /// + [Range(0.0, 270.0, ErrorMessage = "Проработка 2, Обороты, об/мин., Вниз, должно быть в пределах от 0 до 270")] + public double Reaming2RpmDown { get; set; } + + /// + /// Проработка 2, Расход, л/с., Вверх + /// + [Range(0.0, 100.0, ErrorMessage = "Проработка 2, Расход, л/с., Вверх, должно быть в пределах от 0 до 100")] + public double Reaming2FlowRateUp { get; set; } + + /// + /// Проработка 2, Расход, л/с., Вниз + /// + [Range(0.0, 100.0, ErrorMessage = "Проработка 2, Расход, л/с., Вниз, должно быть в пределах от 0 до 100")] + public double Reaming2FlowRateDown { get; set; } + + /// + /// Проработка 2, Интервал проработки, м. + /// + [Range(0.0, 30.0, ErrorMessage = "Проработка 2, Интервал проработки, м., должно быть в пределах от 0 до 30")] + public double Reaming2Interval { get; set; } + + /// + /// Остановка над забоем, м. + /// + [Range(0.0, 10.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 10")] + public double Reaming2StopPointOffBottom { get; set; } + + /// + /// Проработка 3, Количество повторений, шт. + /// + [Range(0, 99, ErrorMessage = "Проработка 3, Количество повторений, шт., должно быть в пределах от 0 до 99")] + public double Reaming3RepetitionsCount { get; set; } + + /// + /// Проработка 3, Скорость, м/ч., Вверх + /// + [Range(0.0, 999.0, ErrorMessage = "Проработка 3, Скорость, м/ч., Вверх, должно быть в пределах от 0 до 999")] + public double Reaming3RopUp { get; set; } + + /// + /// Проработка 3, Скорость, м/ч., Вниз + /// + [Range(0.0, 999.0, ErrorMessage = "Проработка 3, Скорость, м/ч., Вниз, должно быть в пределах от 0 до 999")] + public double Reaming3RopDown { get; set; } + + /// + /// Проработка 3, Обороты, об/мин., Вверх + /// + [Range(0.0, 270.0, ErrorMessage = "Проработка 3, Обороты, об/мин., Вверх, должно быть в пределах от 0 до 270")] + public double Reaming3RpmUp { get; set; } + + /// + /// Проработка 3, Обороты, об/мин., Вниз + /// + [Range(0.0, 270.0, ErrorMessage = "Проработка 3, Обороты, об/мин., Вниз, должно быть в пределах от 0 до 270")] + public double Reaming3RpmDown { get; set; } + + /// + /// Проработка 3, Расход, л/с., Вверх + /// + [Range(0.0, 100.0, ErrorMessage = "Проработка 3, Расход, л/с., Вверх, должно быть в пределах от 0 до 100")] + public double Reaming3FlowRateUp { get; set; } + + /// + /// Проработка 3, Расход, л/с., Вниз + /// + [Range(0.0, 100.0, ErrorMessage = "Проработка 3, Расход, л/с., Вниз, должно быть в пределах от 0 до 100")] + public double Reaming3FlowRateDown { get; set; } + + /// + /// Проработка 3, Интервал проработки, м. + /// + [Range(0.0, 30.0, ErrorMessage = "Проработка 3, Интервал проработки, м., должно быть в пределах от 0 до 30")] + public double Reaming3Interval { get; set; } + + /// + /// Остановка над забоем, м. + /// + [Range(0.0, 10.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 10")] + public double Reaming3StopPointOffBottom { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string Note { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanReamingSlideDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanReamingSlideDto.cs new file mode 100644 index 00000000..f2ef28fd --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanReamingSlideDto.cs @@ -0,0 +1,209 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Operations; + +/// +/// РТК план проработка для слайда +/// +public class ProcessMapPlanReamingSlideDto : ProcessMapPlanBaseDto +{ + /// + /// Максимально допустимое давление, атм + /// + [Range(0.0, 400.0, ErrorMessage = "Максимально допустимое давление, атм., должно быть в пределах от 0 до 400")] + public double PressureMax { get; set; } + + /// + /// Перепад давления уставка, атм + /// + [Range(0.0, 60.0, ErrorMessage = "Перепад давления уставка, атм., должно быть в пределах от 0 до 60")] + public double DifferentialPressure { get; set; } + + /// + /// Затяжка + /// + [Range(0.0, 20.0, ErrorMessage = "Затяжка, должно быть в пределах от 0 до 20")] + public double Tight { get; set; } + + /// + /// Посадка + /// + [Range(0.0, 20.0, ErrorMessage = "Посадка, должно быть в пределах от 0 до 20")] + public double SlackingOff { get; set; } + + /// + /// Максимально допустимый момент, кН*м. + /// + [Range(0.0, 35.0, ErrorMessage = "Максимально допустимый момент, кН*м., должно быть в пределах от 0 до 35")] + public double TorqueMax { get; set; } + + /// + /// Проработка 1, Количество повторений, шт. + /// + [Range(0.0, 99.0, ErrorMessage = "Проработка 1, Количество повторений, шт., должно быть в пределах от 0 до 99")] + public double Reaming1RepetitionsCount { get; set; } + + /// + /// Проработка 1, Скорость, м/ч., Вверх + /// + [Range(0.0, 999.0, ErrorMessage = "Проработка 1, Скорость, м/ч., Вверх, должно быть в пределах от 0 до 999")] + public double Reaming1RopUp { get; set; } + + /// + /// Проработка 1, Скорость, м/ч., Вниз + /// + [Range(0.0, 999.0, ErrorMessage = "Проработка 1, Скорость, м/ч., Вниз, должно быть в пределах от 0 до 999")] + public double Reaming1RopDown { get; set; } + + /// + /// Проработка 1, Обороты, об/мин., Вверх + /// + [Range(0.0, 270.0, ErrorMessage = "Проработка 1, Обороты, об/мин., Вверх, должно быть в пределах от 0 до 270")] + public double Reaming1RpmUp { get; set; } + + /// + /// Проработка 1, Обороты, об/мин., Вниз + /// + [Range(0.0, 270.0, ErrorMessage = "Проработка 1, Обороты, об/мин., Вниз, должно быть в пределах от 0 до 270")] + public double Reaming1RpmDown { get; set; } + + /// + /// Проработка 1, Расход, л/с., Вверх + /// + [Range(0.0, 100.0, ErrorMessage = "Проработка 1, Расход, л/с., Вверх, должно быть в пределах от 0 до 100")] + public double Reaming1FlowRateUp { get; set; } + + /// + /// Проработка 1, Расход, л/с., Вниз + /// + [Range(0.0, 100.0, ErrorMessage = "Проработка 1, Расход, л/с., Вниз, должно быть в пределах от 0 до 100")] + public double Reaming1FlowRateDown { get; set; } + + /// + /// Проработка 1, Интервал проработки, м. + /// + [Range(0.0, 30.0, ErrorMessage = "Проработка 1, Интервал проработки, м., должно быть в пределах от 0 до 30")] + public double Reaming1Interval { get; set; } + + /// + /// Остановка над забоем, м. + /// + [Range(0.0, 10.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 10")] + public double Reaming1StopPointOffBottom { get; set; } + + /// + /// Проработка 2, Количество повторений, шт. + /// + [Range(0.0, 99.0, ErrorMessage = "Проработка 2, Количество повторений, шт., должно быть в пределах от 0 до 99")] + public double Reaming2RepetitionsCount { get; set; } + + /// + /// Проработка 2, Скорость, м/ч., Вверх + /// + [Range(0.0, 999.0, ErrorMessage = "Проработка 2, Скорость, м/ч., Вверх, должно быть в пределах от 0 до 999")] + public double Reaming2RopUp { get; set; } + + /// + /// Проработка 2, Скорость, м/ч., Вниз + /// + [Range(0.0, 999.0, ErrorMessage = "Проработка 2, Скорость, м/ч., Вниз, должно быть в пределах от 0 до 999")] + public double Reaming2RopDown { get; set; } + + /// + /// Проработка 2, Обороты, об/мин., Вверх + /// + [Range(0.0, 270.0, ErrorMessage = "Проработка 2, Обороты, об/мин., Вверх, должно быть в пределах от 0 до 270")] + public double Reaming2RpmUp { get; set; } + + /// + /// Проработка 2, Обороты, об/мин., Вниз + /// + [Range(0.0, 270.0, ErrorMessage = "Проработка 2, Обороты, об/мин., Вниз, должно быть в пределах от 0 до 270")] + public double Reaming2RpmDown { get; set; } + + /// + /// Проработка 2, Расход, л/с., Вверх + /// + [Range(0.0, 100.0, ErrorMessage = "Проработка 2, Расход, л/с., Вверх, должно быть в пределах от 0 до 100")] + public double Reaming2FlowRateUp { get; set; } + + /// + /// Проработка 2, Расход, л/с., Вниз + /// + [Range(0.0, 100.0, ErrorMessage = "Проработка 2, Расход, л/с., Вниз, должно быть в пределах от 0 до 100")] + public double Reaming2FlowRateDown { get; set; } + + /// + /// Проработка 2, Интервал проработки, м. + /// + [Range(0.0, 30.0, ErrorMessage = "Проработка 2, Интервал проработки, м., должно быть в пределах от 0 до 30")] + public double Reaming2Interval { get; set; } + + /// + /// Остановка над забоем, м. + /// + [Range(0.0, 10.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 10")] + public double Reaming2StopPointOffBottom { get; set; } + + /// + /// Проработка 3, Количество повторений, шт. + /// + [Range(0.0, 99.0, ErrorMessage = "Проработка 3, Количество повторений, шт., должно быть в пределах от 0 до 99")] + public double Reaming3RepetitionsCount { get; set; } + + /// + /// Проработка 3, Скорость, м/ч., Вверх + /// + [Range(0.0, 999.0, ErrorMessage = "Проработка 3, Скорость, м/ч., Вверх, должно быть в пределах от 0 до 999")] + public double Reaming3RopUp { get; set; } + + /// + /// Проработка 3, Скорость, м/ч., Вниз + /// + [Range(0.0, 999.0, ErrorMessage = "Проработка 3, Скорость, м/ч., Вниз, должно быть в пределах от 0 до 999")] + public double Reaming3RopDown { get; set; } + + /// + /// Проработка 3, Обороты, об/мин., Вверх + /// + [Range(0.0, 270.0, ErrorMessage = "Проработка 3, Обороты, об/мин., Вверх, должно быть в пределах от 0 до 270")] + public double Reaming3RpmUp { get; set; } + + /// + /// Проработка 3, Обороты, об/мин., Вниз + /// + [Range(0.0, 270.0, ErrorMessage = "Проработка 3, Обороты, об/мин., Вниз, должно быть в пределах от 0 до 270")] + public double Reaming3RpmDown { get; set; } + + /// + /// Проработка 3, Расход, л/с., Вверх + /// + [Range(0.0, 100.0, ErrorMessage = "Проработка 3, Расход, л/с., Вверх, должно быть в пределах от 0 до 100")] + public double Reaming3FlowRateUp { get; set; } + + /// + /// Проработка 3, Расход, л/с., Вниз + /// + [Range(0.0, 100.0, ErrorMessage = "Проработка 3, Расход, л/с., Вниз, должно быть в пределах от 0 до 100")] + public double Reaming3FlowRateDown { get; set; } + + /// + /// Проработка 3, Интервал проработки, м. + /// + [Range(0.0, 30.0, ErrorMessage = "Проработка 3, Интервал проработки, м., должно быть в пределах от 0 до 30")] + public double Reaming3Interval { get; set; } + + /// + /// Остановка над забоем, м. + /// + [Range(0.0, 10.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 10")] + public double Reaming3StopPointOffBottom { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string Note { get; set; } = string.Empty; + + +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanRecordingStaticMeasurementDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanRecordingStaticMeasurementDto.cs new file mode 100644 index 00000000..28ba53bd --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanRecordingStaticMeasurementDto.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Operations; + +/// +/// РТК план записи статического замера +/// +public class ProcessMapPlanRecordingStaticMeasurementDto : ProcessMapPlanBaseDto +{ + /// + /// Время записи замера, сек + /// + [Range(0.0, 1800.0, ErrorMessage = "Время записи замера, сек., должно быть в пределах от 0 до 1800")] + public double MeasurementRecordingTime { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, не должно превышать 1024 символов")] + public string Note { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanRotorDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanRotorDto.cs similarity index 88% rename from AsbCloudApp/Data/ProcessMaps/ProcessMapPlanRotorDto.cs rename to AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanRotorDto.cs index eb3640dd..938732c2 100644 --- a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanRotorDto.cs +++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanRotorDto.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; -namespace AsbCloudApp.Data.ProcessMaps; +namespace AsbCloudApp.Data.ProcessMaps.Operations; /// /// РТК план бурение скважины в роторе @@ -11,13 +11,13 @@ public class ProcessMapPlanRotorDto : ProcessMapPlanBaseDto /// Максимально допустимая скорость, м/ч /// [Range(0, 800.0, ErrorMessage = "Максимально допустимая скорость, м/ч., должно быть в пределах от 0 до 800.0")] - public double RopLimitMax { get; set; } + public double RopMax { get; set; } /// /// Максимально допустимое давление, атм /// [Range(0.0, 400.0, ErrorMessage = "Максимально допустимое давление, атм., должно быть в пределах от 0 до 400.0")] - public double PressureLimitMax { get; set; } + public double PressureMax { get; set; } /// /// Перепад давления, атм. Уставка @@ -29,7 +29,7 @@ public class ProcessMapPlanRotorDto : ProcessMapPlanBaseDto /// Перепад давления, атм. Ограничение /// [Range(0.0, 60.0, ErrorMessage = "Перепад давления, атм., ограничение, должно быть в пределах от 0 до 60.0")] - public double DifferentialPressureLimitMax { get; set; } + public double DifferentialPressureMax { get; set; } /// /// Нагрузка, т. Уставка @@ -41,7 +41,7 @@ public class ProcessMapPlanRotorDto : ProcessMapPlanBaseDto /// Нагрузка, т. Ограничение /// [Range(0.0, 99.0, ErrorMessage = "Нагрузка, т., ограничение, должно быть в пределах от 0 до 99.0")] - public double WeightOnBitLimitMax { get; set; } + public double WeightOnBitMax { get; set; } /// /// Момент на ВСП, кН*м. Уставка @@ -53,19 +53,19 @@ public class ProcessMapPlanRotorDto : ProcessMapPlanBaseDto /// Момент на ВСП, кН*м. Ограничение /// [Range(0.0, 35.0, ErrorMessage = "Момент на ВСП, кН*м., ограничение, должно быть в пределах от 0 до 35.0")] - public double TopDriveTorqueLimit { get; set; } + public double TopDriveTorqueMax { get; set; } /// /// Обороты на ВСП, об/мин. Уставка /// [Range(0.0, 270.0, ErrorMessage = "Обороты на ВСП, об/мин., уставка, должно быть в пределах от 0 до 270.0")] - public double RevolutionsPerMinute { get; set; } + public double Rpm { get; set; } /// /// Обороты на ВСП, об/мин. Ограничение /// [Range(0.0, 270.0, ErrorMessage = "Обороты на ВСП, об/мин., ограничение, должно быть в пределах от 0 до 270.0")] - public double RevolutionsPerMinuteLimitMax { get; set; } + public double RpmMax { get; set; } /// /// Расход л/с. Уставка @@ -77,7 +77,7 @@ public class ProcessMapPlanRotorDto : ProcessMapPlanBaseDto /// Расход л/с. Ограничение /// [Range(0.0, 100.0, ErrorMessage = "Расход л/с., ограничение, должно быть в пределах от 0 до 100.0")] - public double FlowRateLimitMax { get; set; } + public double FlowRateMax { get; set; } /// /// Примечание diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSlideDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSlideDto.cs new file mode 100644 index 00000000..2ad24fdf --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSlideDto.cs @@ -0,0 +1,75 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Operations; + +/// +/// РТК план бурение скважины в слайде +/// +public class ProcessMapPlanSlideDto : ProcessMapPlanBaseDto +{ + /// + /// Максимально допустимая скорость, м/ч + /// + [Range(0, 800, ErrorMessage = "Максимально допустимая скорость, м/ч., должно быть в пределах от 0 до 800")] + public double RopMax { get; set; } + + /// + /// Максимально допустимое давление, атм + /// + [Range(0, 400, ErrorMessage = "Максимально допустимое давление, атм., должно быть в пределах от 0 до 400")] + public double PressureMax { get; set; } + + /// + /// Перепад давления уставка, атм + /// + [Range(0, 60, ErrorMessage = "Перепад давления уставка, атм., должно быть в пределах от 0 до 60")] + public double DifferentialPressure { get; set; } + + /// + /// Перепад давления ограничение, атм + /// + [Range(0, 60, ErrorMessage = "Перепад давления ограничение, атм., должно быть в пределах от 0 до 60")] + public double DifferentialPressureMax { get; set; } + + /// + /// Нагрузка уставка, т + /// + [Range(0, 99, ErrorMessage = "Нагрузка уставка, т., должно быть в пределах от 0 до 99")] + public double WeightOnBit { get; set; } + + /// + /// Нагрузка ограничение, т + /// + [Range(0, 99, ErrorMessage = "Нагрузка ограничение, т., должно быть в пределах от 0 до 99")] + public double WeightOnBitMax { get; set; } + + /// + /// Расход уставка л/с + /// + [Range(0, 100, ErrorMessage = "Расход уставка л/с., должно быть в пределах от 0 до 100")] + public double FlowRate { get; set; } + + /// + /// Расход ограничение л/с + /// + [Range(0, 100, ErrorMessage = "Расход ограничение л/с., должно быть в пределах от 0 до 100")] + public double FlowRateMax { get; set; } + + /// + /// Расчётная пружина, градус + /// + [Range(0, 9999, ErrorMessage = "Расчётная пружина, градус, должно быть в пределах от 0 до 9999")] + public double Spring { get; set; } + + /// + /// Складывание инструмента, м + /// + [Range(0, 9999, ErrorMessage = "Складывание инструмента, м., должно быть в пределах от 0 до 9999")] + public double Buckling { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, не должно превышать 1024 символов")] + public string Note { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSwitchingOffThePumpDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSwitchingOffThePumpDto.cs new file mode 100644 index 00000000..befdce47 --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSwitchingOffThePumpDto.cs @@ -0,0 +1,27 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Operations; + +/// +/// РТК план выключение насоса +/// +public class ProcessMapPlanSwitchingOffThePumpDto : ProcessMapPlanBaseDto +{ + /// + /// Продолжительность, сек. + /// + [Range(0.0, 1800.0, ErrorMessage = "Продолжительность, сек., должно быть в пределах от 0 до 1800")] + public double Duration { get; set; } + + /// + /// Лимит остаточного давления, атм. + /// + [Range(0.0, 100.0, ErrorMessage = "Лимит остаточного давления, атм., должно быть в пределах от 0 до 100")] + public double ResidualPressureLimit { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string Note { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSwitchingToTheModeDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSwitchingToTheModeDto.cs new file mode 100644 index 00000000..1142cb59 --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanSwitchingToTheModeDto.cs @@ -0,0 +1,34 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace AsbCloudApp.Data.ProcessMaps.Operations; + +/// +/// РТК план выход на плановый расход +/// +public class ProcessMapPlanSwitchingToTheModeDto : ProcessMapPlanBaseDto +{ + /// + /// Время выхода буровых насосов на плановый расход, сек. + /// + [Range(0.0, 3600.0, ErrorMessage = "Время выхода буровых насосов на плановый расход, сек., должно быть в пределах от 0 до 3600")] + public double RampTime { get; set; } + + /// + /// Расход, л/с + /// + [Range(0.0, 100.0, ErrorMessage = "Расход, л/с., должно быть в пределах от 0 до 100")] + public double FlowRate { get; set; } + + /// + /// Максимально допустимое давление, атм. + /// + [Range(0.0, 400.0, ErrorMessage = "Максимально допустимое давление, атм., должно быть в пределах от 0 до 400")] + public double PressureMax { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string Note { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanTFOrientationDto.cs b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanTFOrientationDto.cs new file mode 100644 index 00000000..cc3652a3 --- /dev/null +++ b/AsbCloudApp/Data/ProcessMaps/Operations/ProcessMapPlanTFOrientationDto.cs @@ -0,0 +1,99 @@ +using System.ComponentModel.DataAnnotations; + +namespace AsbCloudApp.Data.ProcessMaps.Operations; + +/// +/// РТК план выставление +/// +public class ProcessMapPlanTFOrientationDto : ProcessMapPlanBaseDto +{ + /// + /// Задание TF, град. + /// + [Range(0.0, 360.0, ErrorMessage = "Задание TF, град., должно быть в пределах от 0 до 360")] + public double TFSetpoint { get; set; } + + /// + /// Пружина, град. + /// + [Range(0.0, 10000.0, ErrorMessage = "Пружина, град., должно быть в пределах от 0 до 10000")] + public double Spring { get; set; } + + /// + /// Максимальное давление, атм. + /// + [Range(0.0, 400.0, ErrorMessage = "Максимальное давление, атм., должно быть в пределах от 0 до 400")] + public double PressureMax { get; set; } + + /// + /// Перепад давления, атм. + /// + [Range(0.0, 60.0, ErrorMessage = "Перепад давления, атм., должно быть в пределах от 0 до 60")] + public double DifferentialPressure { get; set; } + + /// + /// Затяжка, т. + /// + [Range(0.0, 20.0, ErrorMessage = "Затяжка, т., должно быть в пределах от 0 до 20")] + public double Tight { get; set; } + + /// + /// Посадка, т. + /// + [Range(0.0, 20.0, ErrorMessage = "Посадка, т., должно быть в пределах от 0 до 20")] + public double SlackingOff { get; set; } + + /// + /// Максимально допустимый момент, кН*м. + /// + [Range(0.0, 35.0, ErrorMessage = "Максимально допустимый момент, кН*м., должно быть в пределах от 0 до 35")] + public double TorqueMax { get; set; } + + /// + /// Количество расхаживаний, шт. + /// + [Range(0.0, 99.0, ErrorMessage = "Количество расхаживаний, шт., должно быть в пределах от 0 до 99")] + public int RepetitionsCount { get; set; } + + /// + /// Скорость вверх, м/ч. + /// + [Range(0.0, 999.0, ErrorMessage = "Скорость вверх, м/ч., должно быть в пределах от 0 до 999")] + public double RopUp { get; set; } + + /// + /// Скорость вниз, м/ч. + /// + [Range(0.0, 999.0, ErrorMessage = "Скорость вниз, м/ч., должно быть в пределах от 0 до 999")] + public double RopDown { get; set; } + + /// + /// Расход вверх, л/с. + /// + [Range(0.0, 100.0, ErrorMessage = "Расход вверх, л/с., должно быть в пределах от 0 до 100")] + public double FlowRateUp { get; set; } + + /// + /// Расход вниз, л/с. + /// + [Range(0.0, 100.0, ErrorMessage = "Расход вниз, л/с., должно быть в пределах от 0 до 100")] + public double FlowRateDown { get; set; } + + /// + /// Интервал расхаживания, м. + /// + [Range(0.0, 30.0, ErrorMessage = "Интервал расхаживания, м., должно быть в пределах от 0 до 30")] + public double Interval { get; set; } + + /// + /// Остановка над забоем, м. + /// + [Range(0.0, 10.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 10")] + public double StopPointOffBottom { get; set; } + + /// + /// Примечание + /// + [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")] + public string Note { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanReamDto.cs b/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanReamDto.cs deleted file mode 100644 index 853a7fcd..00000000 --- a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanReamDto.cs +++ /dev/null @@ -1,82 +0,0 @@ -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; - -namespace AsbCloudApp.Data.ProcessMaps; - -/// -/// РТК план проработка скважины -/// -public class ProcessMapPlanReamDto : ProcessMapPlanBaseDto, IValidatableObject -{ - /// - /// Количество повторений - /// - [Required] - [Range(0, 100, ErrorMessage = "Количество повторений должно быть в пределах от 0 до 100")] - public double Repeats { get; set; } - - /// - /// Вращение при движении вверх, об/мин - /// - [Required] - [Range(0, 99999.9, ErrorMessage = "Количество вращений вверх должно быть в пределах от 0 до 99999.9")] - public double SpinUpward { get; set; } - - /// - /// Вращение при движении вниз, об/мин - /// - [Required] - [Range(0, 99999.9, ErrorMessage = "Количество вращений вниз должно быть в пределах от 0 до 99999.9")] - public double SpinDownward { get; set; } - - /// - /// Скорость подъёма, м/ч - /// - [Required] - [Range(0, 99999.9, ErrorMessage = "Скорость подъёма должна быть в пределах от 0 до 99999.9")] - public double SpeedUpward { get; set; } - - /// - /// Скорость спуска, м/ч - /// - [Required] - [Range(0, 99999.9, ErrorMessage = "Скорость спуска должна быть в пределах от 0 до 99999.9")] - public double SpeedDownward { get; set; } - - /// - /// Уставка зятяжки, т - /// - [Required] - [Range(0, 99999.9, ErrorMessage = "Значение затяжек уставки должно быть в пределах от 0 до 99999.9")] - public double SetpointDrag { get; set; } - - /// - /// Уставка посадки, т - /// - [Required] - [Range(0, 99999.9, ErrorMessage = "Значение посадки уставки должно быть в пределах от 0 до 99999.9")] - public double SetpointTight { get; set; } - - /// - /// Давление, атм - /// - [Required] - [Range(0, 99999.9, ErrorMessage = "Давление должно быть в пределах от 0 до 99999.9")] - public double Pressure { get; set; } - - /// - /// Момент, кН*м - /// - [Required] - [Range(0, 99999.9, ErrorMessage = "Крутящий момент должен быть в пределах от 0 до 99999.9")] - public double Torque { get; set; } - - /// - public override IEnumerable Validate(ValidationContext validationContext) - { - if (DepthEnd < DepthStart) - yield return new ValidationResult( - $"{nameof(DepthEnd)}:{DepthEnd:#0.0} меньше {nameof(DepthStart)}:{DepthStart:#0.0}", - new[] { nameof(DepthEnd), nameof(DepthStart) }); - } -} \ No newline at end of file diff --git a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanSlideDto.cs b/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanSlideDto.cs deleted file mode 100644 index 617b5f46..00000000 --- a/AsbCloudApp/Data/ProcessMaps/ProcessMapPlanSlideDto.cs +++ /dev/null @@ -1,75 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace AsbCloudApp.Data.ProcessMaps; - -/// -/// РТК план бурение скважины в слайде -/// -public class ProcessMapPlanSlideDto : ProcessMapPlanBaseDto -{ - /// - /// Максимально допустимая скорость, м/ч - /// - [Range(0, 800.0, ErrorMessage = "Максимально допустимая скорость, м/ч., должно быть в пределах от 0 до 800.0")] - public double RopLimitMax { get; set; } - - /// - /// Максимально допустимое давление, атм - /// - [Range(0, 400.0, ErrorMessage = "Максимально допустимое давление, атм., должно быть в пределах от 0 до 400.0")] - public double PressureLimitMax { get; set; } - - /// - /// Перепад давления, атм. Уставка - /// - [Range(0, 60.0, ErrorMessage = "Перепад давления, атм. уставка, должно быть в пределах от 0 до 60.0")] - public double DifferentialPressure { get; set; } - - /// - /// Перепад давления, атм. Ограничение - /// - [Range(0, 60.0, ErrorMessage = "Перепад давления, атм., ограничение, должно быть в пределах от 0 до 60.0")] - public double DifferentialPressureLimitMax { get; set; } - - /// - /// Нагрузка, т. Уставка - /// - [Range(0, 50.0, ErrorMessage = " Нагрузка, т., уставка, должно быть в пределах от 0 до 50.0")] - public double WeightOnBit { get; set; } - - /// - /// Нагрузка, т. Ограничение - /// - [Range(0, 50.0, ErrorMessage = "Нагрузка, т., ограничение, должно быть в пределах от 0 до 50.0")] - public double WeightOnBitLimitMax { get; set; } - - /// - /// Расход л/с. Уставка - /// - [Range(0, 100.0, ErrorMessage = "Расход, л/с., уставка, должно быть в пределах от 0 до 50.0")] - public double FlowRate { get; set; } - - /// - /// Расход л/с. Ограничение - /// - [Range(0, 100.0, ErrorMessage = "Расход, л/с., ограничение, должно быть в пределах от 0 до 100.0")] - public double FlowRateLimitMax { get; set; } - - /// - /// Расчётная пружина, градус - /// - [Range(0, 9999.9, ErrorMessage = "Расчётная пружина, градус, должно быть в пределах от 0 до 9999.9")] - public double Spring { get; set; } - - /// - /// Складывание инструмента, м - /// - [Range(0, 9999.9, ErrorMessage = "Складывание инструмента, м, должно быть в пределах от 0 до 9999.9")] - public double ToolBuckling { get; set; } - - /// - /// Примечание - /// - [StringLength(1024, ErrorMessage = "Примечание, не должно превышать 1024 символов")] - public string Note { get; set; } = string.Empty; -} \ No newline at end of file diff --git a/AsbCloudDb/Migrations/20240630162502_Add_Tables_ProcessMapOperationsAndFunctions.Designer.cs b/AsbCloudDb/Migrations/20240630162502_Add_Tables_ProcessMapOperationsAndFunctions.Designer.cs new file mode 100644 index 00000000..5c02c0f2 --- /dev/null +++ b/AsbCloudDb/Migrations/20240630162502_Add_Tables_ProcessMapOperationsAndFunctions.Designer.cs @@ -0,0 +1,12939 @@ +// +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("20240630162502_Add_Tables_ProcessMapOperationsAndFunctions")] + partial class Add_Tables_ProcessMapOperationsAndFunctions + { + /// + 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.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", 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("TopDriveRpmMin") + .HasColumnType("double precision") + .HasColumnName("top_drive_rpm_min") + .HasComment("Минимальные обороты ВСП, об/мин"); + + b.Property("TopDriveStartMinFlowRate") + .HasColumnType("double precision") + .HasColumnName("top_drive_start_min_flow_rate") + .HasComment("Минимальный расход для запуска оборотов ВСП, л/сек"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Максимально допустимый момент на ВСП при противоаварийном вращении, кН*м"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_anti_crash_rotation", t => + { + t.HasComment("Противоаварийное вращение"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", 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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("ZenithAngle") + .HasColumnType("double precision") + .HasColumnName("zenit_angle") + .HasComment("Зенитный угол, градусы"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_auto_hold_tf", t => + { + t.HasComment("Автоудержание TF"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", 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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("StickSlip") + .HasColumnType("double precision") + .HasColumnName("stick_slip") + .HasComment("StickSlip"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_functions_damper", t => + { + t.HasComment("Демпфер"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", 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("LengthStep") + .HasColumnType("double precision") + .HasColumnName("length_step") + .HasComment("Величина проходки шага, м."); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("RpmMin") + .HasColumnType("double precision") + .HasColumnName("rpm_min") + .HasComment("Минимальные обороты на ВСП, об/мин."); + + b.Property("RpmStepsCount") + .HasColumnType("integer") + .HasColumnName("rpm_steps_count") + .HasComment("Количество шагов оборотов на ВСП, об/мин."); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.Property("WeightOnBitStepsCount") + .HasColumnType("integer") + .HasColumnName("weight_on_bit_steps_count") + .HasComment("Количество шагов по нагрузке"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_drilltest", t => + { + t.HasComment("DrillTest"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", 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("Mode") + .HasColumnType("integer") + .HasColumnName("mode") + .HasComment("Режим Авто/Руч"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("OptimalOscillationAngle") + .HasColumnType("double precision") + .HasColumnName("optimal_oscillation_angle") + .HasComment("Оптимальный угол осцилляции, градусы"); + + b.Property("RpmLeft") + .HasColumnType("double precision") + .HasColumnName("Rpm_left") + .HasComment("Скорость влево, об/мин"); + + b.Property("RpmRight") + .HasColumnType("double precision") + .HasColumnName("Rpm​_right") + .HasComment("Скорость вправо, об/мин"); + + b.Property("TorqueMaxLeft") + .HasColumnType("double precision") + .HasColumnName("torque_max_left") + .HasComment("Ограничение момента влево, кН*м"); + + b.Property("TorqueMaxRight") + .HasColumnType("double precision") + .HasColumnName("torque_max_right") + .HasComment("Ограничение момента вправо, кН*м"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_oscillation", t => + { + t.HasComment("Осцилляция"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialVibrations") + .HasColumnType("double precision") + .HasColumnName("axial_vibrations") + .HasComment("Осевые вибрации"); + + b.Property("CombinedVibrations") + .HasColumnType("double precision") + .HasColumnName("combined_vibrations") + .HasComment("Комбинированные вибрации"); + + 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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("RpmMin") + .HasColumnType("double precision") + .HasColumnName("rpm_min") + .HasComment("Минимальные обороты на ВСП, об/мин."); + + b.Property("StickSlip") + .HasColumnType("double precision") + .HasColumnName("stick_slip") + .HasComment("stickSlip"); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.Property("Whirl") + .HasColumnType("double precision") + .HasColumnName("whirl") + .HasComment("Whirl"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_shock_test", t => + { + t.HasComment("ShockTest"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", 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("SignalWaitingTime") + .HasColumnType("double precision") + .HasColumnName("signal_waiting_time") + .HasComment("Время ожидания выхода сигнала с ТМС, сек."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_static_measurement_output", t => + { + t.HasComment("Выход статического замера"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanUpdatingNoloadParameters", 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("IdDeclineSocketColumn") + .HasColumnType("boolean") + .HasColumnName("id_decline_socket_column") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_updating_noload_parameters", t => + { + t.HasComment("Обновление холостого хода"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", 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("DifferentialPressureMin") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_min") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("TimeLoadCapacityMin") + .HasColumnType("double precision") + .HasColumnName("time_load_capacity_min") + .HasComment("Время выработки минимальное, сек"); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_load_capacity", t => + { + t.HasComment("РТК выработка нагрузки"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", 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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП, об/мин., Уставка"); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП, об/мин., Ограничение"); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП, кН*м., Уставка"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП, кН*м., Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_oscillation_angels", t => + { + t.HasComment("Определение углов осцилляции"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("flow_rate_up") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RopUp") + .HasColumnType("double precision") + .HasColumnName("rop_up") + .HasComment("Скорость вверх, м/ч."); + + b.Property("RpmDown") + .HasColumnType("double precision") + .HasColumnName("rpm_down") + .HasComment("Обороты вниз, об/мин."); + + b.Property("RpmUp") + .HasColumnType("double precision") + .HasColumnName("rpm_up") + .HasComment("Обороты вверх, об/мин."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("StopOffTheBottom") + .HasColumnType("double precision") + .HasColumnName("stop_off_the_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_positioning_off_the_bottom", t => + { + t.HasComment("Позиционирование над забоем"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.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.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("Reaming1FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_down") + .HasComment("Проработка 1, Расход, л/с., Вниз"); + + b.Property("Reaming1FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_up") + .HasComment("Проработка 1, Расход, л/с., Вверх"); + + b.Property("Reaming1Interval") + .HasColumnType("double precision") + .HasColumnName("reaming1_interval") + .HasComment("Проработка 1, Интервал проработки, м."); + + b.Property("Reaming1RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming1_repetitions_count") + .HasComment("Проработка 1. Количество повторений, шт."); + + b.Property("Reaming1RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_down") + .HasComment("Проработка 1, Скорость, м/ч., Вниз"); + + b.Property("Reaming1RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_up") + .HasComment("Проработка 1. Скорость вверх, м/ч."); + + b.Property("Reaming1RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_down") + .HasComment("Проработка 1, Обороты, об/мин., Вниз"); + + b.Property("Reaming1RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_up") + .HasComment("Проработка 1, Обороты, об/мин., Вверх"); + + b.Property("Reaming1StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming1_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming2FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_down") + .HasComment("Проработка 2, Расход, л/с., Вниз"); + + b.Property("Reaming2FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_up") + .HasComment("Проработка 2, Расход, л/с., Вверх"); + + b.Property("Reaming2Interval") + .HasColumnType("double precision") + .HasColumnName("reaming2_interval") + .HasComment("Проработка 2, Интервал проработки, м."); + + b.Property("Reaming2RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming2_repetitions_count") + .HasComment("Проработка 2, Количество повторений, шт."); + + b.Property("Reaming2RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_down") + .HasComment("Проработка 2, Скорость, м/ч., Вниз"); + + b.Property("Reaming2RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_up") + .HasComment("Проработка 2, Скорость, м/ч., Вверх"); + + b.Property("Reaming2RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_down") + .HasComment("Проработка 2, Обороты, об/мин., Вниз"); + + b.Property("Reaming2RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_up") + .HasComment("Проработка 2, Обороты, об/мин., Вверх"); + + b.Property("Reaming2StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming2_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming3FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_down") + .HasComment("Проработка 3, Расход, л/с., Вниз"); + + b.Property("Reaming3FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_up") + .HasComment("Проработка 3, Расход, л/с., Вверх"); + + b.Property("Reaming3Interval") + .HasColumnType("double precision") + .HasColumnName("reaming3_interval") + .HasComment("Проработка 3, Интервал проработки, м."); + + b.Property("Reaming3RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming3_repetitions_count") + .HasComment("Проработка 3, Количество повторений, шт."); + + b.Property("Reaming3RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_down") + .HasComment("Проработка 3, Скорость, м/ч., Вниз"); + + b.Property("Reaming3RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_up") + .HasComment("Проработка 3, Скорость, м/ч., Вверх"); + + b.Property("Reaming3RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_down") + .HasComment("Проработка 3, Обороты, об/мин., Вниз"); + + b.Property("Reaming3RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_up") + .HasComment("Проработка 3, Обороты, об/мин., Вверх"); + + b.Property("Reaming3StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming3_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_reaming_rotor", t => + { + t.HasComment("РТК проработка ротор"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("Reaming1FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_down") + .HasComment("Проработка 1, Расход, л/с., Вниз"); + + b.Property("Reaming1FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_up") + .HasComment("Проработка 1, Расход, л/с., Вверх"); + + b.Property("Reaming1Interval") + .HasColumnType("double precision") + .HasColumnName("reaming1_interval") + .HasComment("Проработка 1, Интервал проработки, м."); + + b.Property("Reaming1RepetitionsCount") + .HasColumnType("double precision") + .HasColumnName("reaming1_repetitions_count") + .HasComment("Проработка 1. Количество повторений, шт."); + + b.Property("Reaming1RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_down") + .HasComment("Проработка 1. Скорость вниз, м/ч."); + + b.Property("Reaming1RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_up") + .HasComment("Проработка 1. Скорость вверх, м/ч."); + + b.Property("Reaming1RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_down") + .HasComment("Проработка 1, Обороты, об/мин., Вниз"); + + b.Property("Reaming1RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_up") + .HasComment("Проработка 1, Обороты, об/мин., Вверх"); + + b.Property("Reaming1StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming1_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming2FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_down") + .HasComment("Проработка 2, Расход, л/с., Вниз"); + + b.Property("Reaming2FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_up") + .HasComment("Проработка 2, Расход, л/с., Вверх"); + + b.Property("Reaming2Interval") + .HasColumnType("double precision") + .HasColumnName("reaming2_interval") + .HasComment("Проработка 2, Интервал проработки, м."); + + b.Property("Reaming2RepetitionsCount") + .HasColumnType("double precision") + .HasColumnName("reaming2_repetitions_count") + .HasComment("Проработка 2, Количество повторений, шт."); + + b.Property("Reaming2RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_down") + .HasComment("Проработка 2, Скорость, м/ч., Вниз"); + + b.Property("Reaming2RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_up") + .HasComment("Проработка 2, Скорость, м/ч., Вверх"); + + b.Property("Reaming2RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_down") + .HasComment("Проработка 2, Обороты, об/мин., Вниз"); + + b.Property("Reaming2RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_up") + .HasComment("Проработка 2, Обороты, об/мин., Вверх"); + + b.Property("Reaming2StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming2_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming3FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_down") + .HasComment("Проработка 3, Расход, л/с., Вниз"); + + b.Property("Reaming3FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_up") + .HasComment("Проработка 3, Расход, л/с., Вверх"); + + b.Property("Reaming3Interval") + .HasColumnType("double precision") + .HasColumnName("reaming3_interval") + .HasComment("Проработка 3, Интервал проработки, м."); + + b.Property("Reaming3RepetitionsCount") + .HasColumnType("double precision") + .HasColumnName("reaming3_repetitions_count") + .HasComment("Проработка 3, Количество повторений, шт."); + + b.Property("Reaming3RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_down") + .HasComment("Проработка 3, Скорость, м/ч., Вниз"); + + b.Property("Reaming3RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_up") + .HasComment("Проработка 3, Скорость, м/ч., Вверх"); + + b.Property("Reaming3RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_down") + .HasComment("Проработка 3, Обороты, об/мин., Вниз"); + + b.Property("Reaming3RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_up") + .HasComment("Проработка 3, Обороты, об/мин., Вверх"); + + b.Property("Reaming3StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming3_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_reaming_slide", t => + { + t.HasComment("РТК проработка слайд"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", 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("MeasurementRecordingTime") + .HasColumnType("double precision") + .HasColumnName("measurement_recording_time") + .HasComment("Время записи замера, сек"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_recording_static_measurement", t => + { + t.HasComment("Запись статического замера"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм. Уставка"); + + b.Property("DifferentialPressureMax") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_max") + .HasComment("Перепад давления, атм. Ограничение"); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход л/с. Уставка"); + + b.Property("FlowRateMax") + .HasColumnType("double precision") + .HasColumnName("flow_rate_max") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureLimitMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм"); + + b.Property("RopMax") + .HasColumnType("double precision") + .HasColumnName("rop_max") + .HasComment("Максимально допустимая скорость, м/ч"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП, об/мин. Уставка"); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП, об/мин. Ограничение"); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП, кН*м. Уставка"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП, кН*м. Ограничение"); + + b.Property("WeightOnBit") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit") + .HasComment("Нагрузка, т. Уставка"); + + b.Property("WeightOnBitMax") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_max") + .HasComment("Нагрузка, т. Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_rotor", t => + { + t.HasComment("РТК план бурение ротор"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotorLoweringBit", 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RpmDown") + .HasColumnType("double precision") + .HasColumnName("rpm_down") + .HasComment("Обороты вниз, об/мин."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_rotor_lowering_bit", t => + { + t.HasComment("РТК подход к забою в роторе"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotorRpmAcceleration", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Buckling") + .HasColumnType("double precision") + .HasColumnName("buckling") + .HasComment("Складывание, м"); + + 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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("ZenithAngle") + .HasColumnType("double precision") + .HasColumnName("zenit_angle") + .HasComment("Зенитный угол, градусы"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_rotor_rpm_acceleration", t => + { + t.HasComment("Выход на обороты перед ротором"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Buckling") + .HasColumnType("double precision") + .HasColumnName("buckling") + .HasComment("Складывание инструмента, м."); + + 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("DifferentialPressureMax") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_max") + .HasComment("Перепад давления ограничение, атм."); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход уставка, л/с."); + + b.Property("FlowRateMax") + .HasColumnType("double precision") + .HasColumnName("flow_rate_max") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopMax") + .HasColumnType("double precision") + .HasColumnName("rop_max") + .HasComment("Максимально допустимая скорость, м/ч."); + + b.Property("Spring") + .HasColumnType("double precision") + .HasColumnName("spring") + .HasComment("Расчётная пружина, градус"); + + b.Property("WeightOnBit") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit") + .HasComment("Нагрузка уставка, т."); + + b.Property("WeightOnBitMax") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_max") + .HasComment("Нагрузка ограничение, т."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_slide", t => + { + t.HasComment("РТК план бурение слайд"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlideLoweringBit", 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_slide_lowering_bit", t => + { + t.HasComment("РТК подход к забою в слайде"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", 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("Duration") + .HasColumnType("double precision") + .HasColumnName("duration") + .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("ResidualPressureLimit") + .HasColumnType("double precision") + .HasColumnName("residual_pressure_limit") + .HasComment("Лимит остаточного давления, атм."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_switching_off_the_pump", t => + { + t.HasComment("Выключение насоса"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", 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("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_limit") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RampTime") + .HasColumnType("double precision") + .HasColumnName("ramp_time") + .HasComment("Время выхода буровых насосов на плановый расход, сек."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_switching_to_the_mode", t => + { + t.HasComment("Выход на плановый расход"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("flow_rate_up") + .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("Interval") + .HasColumnType("double precision") + .HasColumnName("interval") + .HasComment("Интервал расхаживания, м."); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление, атм."); + + b.Property("RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("repetitions_count") + .HasComment("Количество расхаживаний, шт."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RopUp") + .HasColumnType("double precision") + .HasColumnName("rop_up") + .HasComment("Скорость вверх, м/ч."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Spring") + .HasColumnType("double precision") + .HasColumnName("spring") + .HasComment("Пружина, град."); + + b.Property("StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("TFSetpoint") + .HasColumnType("double precision") + .HasColumnName("tf_setpoint") + .HasComment("Задание TF, град."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_tf_orientation", 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("IsHidden") + .HasColumnType("boolean"); + + 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, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "м/ч", + Name = "БУРЕНИЕ" + }, + new + { + Id = 3001, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "КРЕПЛЕНИЕ" + }, + new + { + Id = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ГФР" + }, + new + { + Id = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные операции" + }, + new + { + Id = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Непроизводительное время (НПВ)" + }, + new + { + Id = 3006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Заключительные работы" + }, + new + { + Id = 4000, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "КНБК" + }, + new + { + Id = 4001, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "м/ч", + Name = "Механическое. бурение" + }, + new + { + Id = 4002, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Статический замер" + }, + new + { + Id = 4003, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Нормализация диаметра скважины" + }, + new + { + Id = 4004, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наращивание" + }, + new + { + Id = 4005, + IdParent = 3001, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 4006, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск обсадной колонны" + }, + new + { + Id = 4018, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Крепление" + }, + new + { + Id = 4007, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Цементирование" + }, + new + { + Id = 4008, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные работы при креплении" + }, + new + { + Id = 4009, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка/разборка приборов ГИС" + }, + new + { + Id = 4010, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 4011, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ГИС" + }, + new + { + Id = 4012, + IdParent = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка, ОБР" + }, + new + { + Id = 4013, + IdParent = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные работы" + }, + new + { + Id = 4014, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт оборудования" + }, + new + { + Id = 4015, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Аварийные работы" + }, + new + { + Id = 4016, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Осложнение" + }, + new + { + Id = 4017, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Незаложенные в ГГД операции" + }, + new + { + Id = 4019, + IdParent = 3006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Заключительные операции" + }, + new + { + Id = 5000, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разборка КНБК" + }, + new + { + Id = 5001, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка КНБК" + }, + new + { + Id = 5002, + IdParent = 4001, + IsHidden = true, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение слайдом" + }, + new + { + Id = 5003, + IdParent = 4001, + IsHidden = true, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение ротором" + }, + new + { + Id = 5004, + IdParent = 4002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Замер ЗТС (запись MWD)" + }, + new + { + Id = 5005, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка перед наращиванием" + }, + new + { + Id = 5006, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка во время бурения" + }, + new + { + Id = 5007, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка" + }, + new + { + Id = 5008, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка во время бурения" + }, + new + { + Id = 5009, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка перед наращиванием" + }, + new + { + Id = 5010, + IdParent = 4004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наращивание" + }, + new + { + Id = 5011, + IdParent = 4004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Удержание в клиньях" + }, + new + { + Id = 5012, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем инструмента" + }, + new + { + Id = 5013, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем КНБК" + }, + new + { + Id = 5014, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск инструмента" + }, + new + { + Id = 5015, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск КНБК" + }, + new + { + Id = 5016, + IdParent = 4006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка при спуске ОК" + }, + new + { + Id = 5017, + IdParent = 4006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск ОК" + }, + new + { + Id = 5018, + IdParent = 4007, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ОЗЦ" + }, + new + { + Id = 5019, + IdParent = 4007, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Цементирование" + }, + new + { + Id = 5020, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка БИ" + }, + new + { + Id = 5021, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка ОК" + }, + new + { + Id = 5022, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при спуске ОК" + }, + new + { + Id = 5023, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при цементировании" + }, + new + { + Id = 5024, + IdParent = 4009, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разборка комплекса приборов ГИС" + }, + new + { + Id = 5025, + IdParent = 4009, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка комплекса приборов ГИС" + }, + new + { + Id = 5026, + IdParent = 4010, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем приборов ГИС (на трубах)" + }, + new + { + Id = 5027, + IdParent = 4010, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск приборов ГИС (на трубах)" + }, + new + { + Id = 5028, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на жестком кабеле" + }, + new + { + Id = 5029, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на кабеле" + }, + new + { + Id = 5030, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на трубах" + }, + new + { + Id = 5031, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Закачка/прокачка пачки" + }, + new + { + Id = 5032, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обработка БР" + }, + new + { + Id = 5033, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование ТС при бурении" + }, + new + { + Id = 5034, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перезапись гаммы-каротажа" + }, + new + { + Id = 5035, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Приготовление БР" + }, + new + { + Id = 5036, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка" + }, + new + { + Id = 5037, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разбуривание тех.оснастки" + }, + new + { + Id = 5038, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск инструмента с проработкой" + }, + new + { + Id = 5039, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ВМР" + }, + new + { + Id = 5040, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Демонтаж ПВО" + }, + new + { + Id = 5041, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Долив затруба при подъёме" + }, + new + { + Id = 5042, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Монтаж ПВО" + }, + new + { + Id = 5043, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наработка жёлоба" + }, + new + { + Id = 5044, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обвязка устья с циркуляционной системой" + }, + new + { + Id = 5045, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Оборудование устья" + }, + new + { + Id = 5046, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка ПВО" + }, + new + { + Id = 5047, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перемонтаж ПВО " + }, + new + { + Id = 5048, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перетяжка талевого каната" + }, + new + { + Id = 5049, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при сборке КНБК" + }, + new + { + Id = 5050, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Полная замена талевого каната" + }, + new + { + Id = 5051, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПР перед забуркой направления" + }, + new + { + Id = 5052, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Продувка манифольда" + }, + new + { + Id = 5053, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Срезка" + }, + new + { + Id = 5054, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Тайм-дриллинг" + }, + new + { + Id = 5055, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Тех.отстой" + }, + new + { + Id = 5056, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Учебная тревога \"Выброс\"" + }, + new + { + Id = 5057, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Чистка ЦСГО/емкостного блока" + }, + new + { + Id = 5058, + IdParent = 4014, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт бурового оборудования" + }, + new + { + Id = 5059, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ловильные работы" + }, + new + { + Id = 5060, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ожидание" + }, + new + { + Id = 5061, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Определение места прихвата и ЛМ" + }, + new + { + Id = 5062, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Работа яссом" + }, + new + { + Id = 5063, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Расхаживание" + }, + new + { + Id = 5064, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - колокол" + }, + new + { + Id = 5065, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - метчик" + }, + new + { + Id = 5066, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - овершот" + }, + new + { + Id = 5067, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - труболовка" + }, + new + { + Id = 5068, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Торпедирование (встряхивание)" + }, + new + { + Id = 5069, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Торпедирование (отстрел)" + }, + new + { + Id = 5070, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Установка ванн" + }, + new + { + Id = 5071, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Фрезеровка" + }, + new + { + Id = 5072, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Контролируемое ГНВП" + }, + new + { + Id = 5073, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Поглощение" + }, + new + { + Id = 5074, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сальникообразование" + }, + new + { + Id = 5075, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Утяжеление БР" + }, + new + { + Id = 5076, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "НПВ / прочее" + }, + new + { + Id = 5077, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обработка раствора (несоответствие параметров)" + }, + new + { + Id = 5078, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "подъем ОК" + }, + new + { + Id = 5079, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ревизия КНБК/инструмента/ЗТС" + }, + new + { + Id = 5082, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка устройства ориентирования КО" + }, + new + { + Id = 5083, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка принудительная" + }, + new + { + Id = 5084, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка подъем БИ, продувка" + }, + new + { + Id = 5085, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск бурильного инструмента со сборкой с мостков" + }, + new + { + Id = 5086, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем БИ с выбросом на мостки" + }, + new + { + Id = 5087, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск БИ со сборкой с мостков" + }, + new + { + Id = 5088, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка и спуск ТБТ" + }, + new + { + Id = 5089, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск КО на транспортной колонне" + }, + new + { + Id = 5090, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Отворот допускной трубы" + }, + new + { + Id = 5091, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Активация подвески, опрессовка" + }, + new + { + Id = 5092, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Монтаж, опрессовка ФА" + }, + new + { + Id = 5093, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка хвостовика 114мм (согласно схеме)" + }, + new + { + Id = 5094, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР к спуску УЭЦН" + }, + new + { + Id = 5095, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Активация подвески (потайной колонны, хвостовика)" + }, + new + { + Id = 5096, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонирование перед спуском" + }, + new + { + Id = 5097, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка - перевод скважины на новый раствор" + }, + new + { + Id = 5098, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка БИ с мостков на подсвечник" + }, + new + { + Id = 5099, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подготовка ствола скважины. Перезапись ГК в интервале установки КО." + }, + new + { + Id = 5100, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Смена рабочего переводника ВСП" + }, + new + { + Id = 5101, + IdParent = 4014, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт" + }, + new + { + Id = 5102, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск пакера" + }, + new + { + Id = 5103, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Запись гамма-каратожа" + }, + new + { + Id = 5104, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонирование спуск БИ" + }, + new + { + Id = 5105, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка клин-отклонителя" + }, + new + { + Id = 5106, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование и посадка клина-отклонителя" + }, + new + { + Id = 5107, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Протяжка подъемного патрубка подвески" + }, + new + { + Id = 5108, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем клина-отклонителя" + }, + new + { + Id = 5109, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Стыковка стингера с хвостовиком основного ствола" + }, + new + { + Id = 5110, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование и установка стыковочного узла хвостовика" + }, + new + { + Id = 5111, + IdParent = 4001, + IsHidden = false, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение с отбором керна" + }, + new + { + Id = 5112, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Работа пакером в обсадной колонне" + }, + new + { + Id = 5113, + IdParent = 4001, + IsHidden = false, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение" + }, + new + { + Id = 5114, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ТО оборудования" + }, + new + { + Id = 5115, + IdParent = 4019, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск НКТ" + }, + new + { + Id = 5116, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вырезка окна" + }, + new + { + Id = 5117, + IdParent = 4013, + IsHidden = false, + 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.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", 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.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", "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.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", 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.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", "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.ProcessMapPlan.Functions.ProcessMapPlanDamper", 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.ProcessMapPlan.Functions.ProcessMapPlanDamper", "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.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", 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.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", "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.ProcessMapPlan.Functions.ProcessMapPlanOscillation", 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.ProcessMapPlan.Functions.ProcessMapPlanOscillation", "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.ProcessMapPlan.Functions.ProcessMapPlanShockTest", 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.ProcessMapPlan.Functions.ProcessMapPlanShockTest", "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.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", 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.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", "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.ProcessMapPlan.Functions.ProcessMapPlanUpdatingNoloadParameters", 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.ProcessMapPlan.Functions.ProcessMapPlanUpdatingNoloadParameters", "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.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", 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.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", "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.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", 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.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", "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.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", 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.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", "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.ProcessMapPlan.Operations.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.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", 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.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", "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.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", 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.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", "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.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", 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.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", "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.ProcessMapPlan.Operations.ProcessMapPlanRotor", 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.ProcessMapPlan.Operations.ProcessMapPlanRotor", "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.ProcessMapPlan.Operations.ProcessMapPlanRotorLoweringBit", 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.ProcessMapPlan.Operations.ProcessMapPlanRotorLoweringBit", "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.ProcessMapPlan.Operations.ProcessMapPlanRotorRpmAcceleration", 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.ProcessMapPlan.Operations.ProcessMapPlanRotorRpmAcceleration", "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.ProcessMapPlan.Operations.ProcessMapPlanSlide", 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.ProcessMapPlan.Operations.ProcessMapPlanSlide", "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.ProcessMapPlan.Operations.ProcessMapPlanSlideLoweringBit", 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.ProcessMapPlan.Operations.ProcessMapPlanSlideLoweringBit", "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.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", 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) + .HasConstraintName("FK_t_process_map_plan_operation_switching_off_the_pump_t_user~1"); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", "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() + .HasConstraintName("FK_t_process_map_plan_operation_switching_off_the_pump_t_well~1"); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", 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.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", "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.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", 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.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", "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.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/20240630162502_Add_Tables_ProcessMapOperationsAndFunctions.cs b/AsbCloudDb/Migrations/20240630162502_Add_Tables_ProcessMapOperationsAndFunctions.cs new file mode 100644 index 00000000..03db637a --- /dev/null +++ b/AsbCloudDb/Migrations/20240630162502_Add_Tables_ProcessMapOperationsAndFunctions.cs @@ -0,0 +1,2060 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace AsbCloudDb.Migrations +{ + /// + public partial class Add_Tables_ProcessMapOperationsAndFunctions : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "differential_pressure_limit_max", + table: "t_process_map_plan_slide"); + + migrationBuilder.DropColumn( + name: "flow_rate_limit_max", + table: "t_process_map_plan_slide"); + + migrationBuilder.DropColumn( + name: "pressure_limit_max", + table: "t_process_map_plan_slide"); + + migrationBuilder.DropColumn( + name: "rop_limit_max", + table: "t_process_map_plan_slide"); + + migrationBuilder.DropColumn( + name: "tool_buckling", + table: "t_process_map_plan_slide"); + + migrationBuilder.DropColumn( + name: "weight_on_bit_limit_max", + table: "t_process_map_plan_slide"); + + migrationBuilder.RenameColumn( + name: "pressure_limit_max", + table: "t_process_map_plan_rotor", + newName: "pressure_max"); + + migrationBuilder.RenameColumn( + name: "weight_on_bit_limit_max", + table: "t_process_map_plan_rotor", + newName: "weight_on_bit_max"); + + migrationBuilder.RenameColumn( + name: "top_drive_torque_limit_max", + table: "t_process_map_plan_rotor", + newName: "top_drive_torque_max"); + + migrationBuilder.RenameColumn( + name: "rop_limit_max", + table: "t_process_map_plan_rotor", + newName: "rop_max"); + + migrationBuilder.RenameColumn( + name: "revolutions_per_minute_limit_max", + table: "t_process_map_plan_rotor", + newName: "rpm_max"); + + migrationBuilder.RenameColumn( + name: "revolution_per_minute", + table: "t_process_map_plan_rotor", + newName: "rpm"); + + migrationBuilder.RenameColumn( + name: "flow_rate_limit_max", + table: "t_process_map_plan_rotor", + newName: "flow_rate_max"); + + migrationBuilder.RenameColumn( + name: "differential_pressure_limit_max", + table: "t_process_map_plan_rotor", + newName: "differential_pressure_max"); + + migrationBuilder.AlterColumn( + name: "weight_on_bit", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + comment: "Нагрузка уставка, т.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Нагрузка, т. Уставка"); + + migrationBuilder.AlterColumn( + name: "flow_rate", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + comment: "Расход уставка, л/с.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Расход л/с. Уставка"); + + migrationBuilder.AlterColumn( + name: "differential_pressure", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + comment: "Перепад давления уставка, атм.", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Перепад давления, атм. Уставка"); + + migrationBuilder.AddColumn( + name: "buckling", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Складывание инструмента, м."); + + migrationBuilder.AddColumn( + name: "differential_pressure_max", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Перепад давления ограничение, атм."); + + migrationBuilder.AddColumn( + name: "flow_rate_max", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Расход ограничение, л/с."); + + migrationBuilder.AddColumn( + name: "pressure_max", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Максимально допустимое давление, атм."); + + migrationBuilder.AddColumn( + name: "rop_max", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Максимально допустимая скорость, м/ч."); + + migrationBuilder.AddColumn( + name: "weight_on_bit_max", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Нагрузка ограничение, т."); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_anti_crash_rotation", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + top_drive_rpm_min = table.Column(type: "double precision", nullable: false, comment: "Минимальные обороты ВСП, об/мин"), + top_drive_start_min_flow_rate = table.Column(type: "double precision", nullable: false, comment: "Минимальный расход для запуска оборотов ВСП, л/сек"), + top_drive_torque_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимый момент на ВСП при противоаварийном вращении, кН*м"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_anti_crash_rotation", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_anti_crash_rotation_t_process_map_plan_a~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_anti_crash_rotation", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_anti_crash_rotation_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_anti_crash_rotation_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_anti_crash_rotation_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_anti_crash_rotation_t_well_section_type_~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Противоаварийное вращение"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_auto_hold_tf", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + zenit_angle = table.Column(type: "double precision", nullable: false, comment: "Зенитный угол, градусы"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_auto_hold_tf", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_auto_hold_tf_t_process_map_plan_auto_hol~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_auto_hold_tf", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_auto_hold_tf_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_auto_hold_tf_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_auto_hold_tf_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_auto_hold_tf_t_well_section_type_id_well~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Автоудержание TF"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_drilltest", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + weight_on_bit_min = table.Column(type: "double precision", nullable: false, comment: "Нагрузка минимальная, т"), + weight_on_bit_steps_count = table.Column(type: "integer", nullable: false, comment: "Количество шагов по нагрузке"), + rpm_min = table.Column(type: "double precision", nullable: false, comment: "Минимальные обороты на ВСП, об/мин."), + rpm_steps_count = table.Column(type: "integer", nullable: false, comment: "Количество шагов оборотов на ВСП, об/мин."), + length_step = table.Column(type: "double precision", nullable: false, comment: "Величина проходки шага, м."), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_drilltest", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_drilltest_t_process_map_plan_drilltest_i~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_drilltest", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_drilltest_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_drilltest_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_drilltest_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_drilltest_t_well_section_type_id_wellsec~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "DrillTest"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_functions_damper", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + stick_slip = table.Column(type: "double precision", nullable: false, comment: "StickSlip"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_functions_damper", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_functions_damper_t_process_map_plan_func~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_functions_damper", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_functions_damper_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_functions_damper_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_functions_damper_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_functions_damper_t_well_section_type_id_~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Демпфер"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_load_capacity", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + time_load_capacity_min = table.Column(type: "double precision", nullable: false, comment: "Время выработки минимальное, сек"), + differential_pressure_min = table.Column(type: "double precision", nullable: false, comment: "Перепад давления минимальный, атм"), + weight_on_bit_min = table.Column(type: "double precision", nullable: false, comment: "Нагрузка минимальная, т"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_load_capacity", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_load_capacity_t_process_map_plan_load_ca~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_load_capacity", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_load_capacity_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_load_capacity_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_load_capacity_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_load_capacity_t_well_section_type_id_wel~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "РТК выработка нагрузки"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_operation_oscillation_angels", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + top_drive_torque = table.Column(type: "double precision", nullable: false, comment: "Момент на ВСП, кН*м., Уставка"), + top_drive_torque_max = table.Column(type: "double precision", nullable: false, comment: "Момент на ВСП, кН*м., Ограничение"), + rpm = table.Column(type: "double precision", nullable: false, comment: "Обороты на ВСП, об/мин., Уставка"), + rpm_max = table.Column(type: "double precision", nullable: false, comment: "Обороты на ВСП, об/мин., Ограничение"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_operation_oscillation_angels", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_oscillation_angels_t_process_m~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_operation_oscillation_angels", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_oscillation_angels_t_user_id_a~", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_oscillation_angels_t_user_id_e~", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_oscillation_angels_t_well_id_w~", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_oscillation_angels_t_well_sect~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Определение углов осцилляции"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_operation_reaming_rotor", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + pressure_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимое давление, атм."), + differential_pressure = table.Column(type: "double precision", nullable: false, comment: "Перепад давления уставка, атм."), + tight = table.Column(type: "double precision", nullable: false, comment: "Затяжка, т."), + slacking_off = table.Column(type: "double precision", nullable: false, comment: "Посадка, т."), + torque_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимый момент, кН*м."), + reaming1_repetitions_count = table.Column(type: "integer", nullable: false, comment: "Проработка 1. Количество повторений, шт."), + reaming1_rop_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 1. Скорость вверх, м/ч."), + reaming1_rop_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 1, Скорость, м/ч., Вниз"), + reaming1_rpm_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 1, Обороты, об/мин., Вверх"), + reaming1_rpm_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 1, Обороты, об/мин., Вниз"), + reaming1_flow_rate_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 1, Расход, л/с., Вверх"), + reaming1_flow_rate_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 1, Расход, л/с., Вниз"), + reaming1_interval = table.Column(type: "double precision", nullable: false, comment: "Проработка 1, Интервал проработки, м."), + reaming1_stop_point_off_bottom = table.Column(type: "double precision", nullable: false, comment: "Остановка над забоем, м."), + reaming2_repetitions_count = table.Column(type: "integer", nullable: false, comment: "Проработка 2, Количество повторений, шт."), + reaming2_rop_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Скорость, м/ч., Вверх"), + reaming2_rop_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Скорость, м/ч., Вниз"), + reaming2_rpm_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Обороты, об/мин., Вверх"), + reaming2_rpm_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Обороты, об/мин., Вниз"), + reaming2_flow_rate_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Расход, л/с., Вверх"), + reaming2_flow_rate_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Расход, л/с., Вниз"), + reaming2_interval = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Интервал проработки, м."), + reaming2_stop_point_off_bottom = table.Column(type: "double precision", nullable: false, comment: "Остановка над забоем, м."), + reaming3_repetitions_count = table.Column(type: "integer", nullable: false, comment: "Проработка 3, Количество повторений, шт."), + reaming3_rop_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Скорость, м/ч., Вверх"), + reaming3_rop_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Скорость, м/ч., Вниз"), + reaming3_rpm_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Обороты, об/мин., Вверх"), + reaming3_rpm_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Обороты, об/мин., Вниз"), + reaming3_flow_rate_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Расход, л/с., Вверх"), + reaming3_flow_rate_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Расход, л/с., Вниз"), + reaming3_interval = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Интервал проработки, м."), + reaming3_stop_point_off_bottom = table.Column(type: "double precision", nullable: false, comment: "Остановка над забоем, м."), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_operation_reaming_rotor", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_reaming_rotor_t_process_map_pl~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_operation_reaming_rotor", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_reaming_rotor_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_reaming_rotor_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_reaming_rotor_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_reaming_rotor_t_well_section_t~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "РТК проработка ротор"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_operation_switching_off_the_pump", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + duration = table.Column(type: "double precision", nullable: false, comment: "Продолжительность, сек."), + residual_pressure_limit = table.Column(type: "double precision", nullable: false, comment: "Лимит остаточного давления, атм."), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_operation_switching_off_the_pump", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_switching_off_the_pump_t_proce~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_operation_switching_off_the_pump", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_switching_off_the_pump_t_user_~", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_switching_off_the_pump_t_user~1", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_switching_off_the_pump_t_well_~", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_operation_switching_off_the_pump_t_well~1", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Выключение насоса"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_oscillation", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + optimal_oscillation_angle = table.Column(type: "double precision", nullable: false, comment: "Оптимальный угол осцилляции, градусы"), + Rpm​_right = table.Column(type: "double precision", nullable: false, comment: "Скорость вправо, об/мин"), + Rpm_left = table.Column(type: "double precision", nullable: false, comment: "Скорость влево, об/мин"), + torque_max_right = table.Column(type: "double precision", nullable: false, comment: "Ограничение момента вправо, кН*м"), + torque_max_left = table.Column(type: "double precision", nullable: false, comment: "Ограничение момента влево, кН*м"), + mode = table.Column(type: "integer", nullable: false, comment: "Режим Авто/Руч"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_oscillation", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_oscillation_t_process_map_plan_oscillati~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_oscillation", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_oscillation_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_oscillation_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_oscillation_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_oscillation_t_well_section_type_id_wells~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Осцилляция"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_positioning_off_the_bottom", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + stop_off_the_bottom = table.Column(type: "double precision", nullable: false, comment: "Остановка над забоем, м."), + pressure_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимое давление, атм."), + differential_pressure = table.Column(type: "double precision", nullable: false, comment: "Перепад давления уставка, атм."), + tight = table.Column(type: "double precision", nullable: false, comment: "Затяжка, т."), + slacking_off = table.Column(type: "double precision", nullable: false, comment: "Посадка, т."), + torque_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимый момент, кН*м."), + rop_up = table.Column(type: "double precision", nullable: false, comment: "Скорость вверх, м/ч."), + rop_down = table.Column(type: "double precision", nullable: false, comment: "Скорость вниз, м/ч."), + rpm_up = table.Column(type: "double precision", nullable: false, comment: "Обороты вверх, об/мин."), + rpm_down = table.Column(type: "double precision", nullable: false, comment: "Обороты вниз, об/мин."), + flow_rate_up = table.Column(type: "double precision", nullable: false, comment: "Расход вверх, л/с."), + flow_rate_down = table.Column(type: "double precision", nullable: false, comment: "Расход вниз, л/с."), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_positioning_off_the_bottom", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_positioning_off_the_bottom_t_process_map~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_positioning_off_the_bottom", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_positioning_off_the_bottom_t_user_id_aut~", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_positioning_off_the_bottom_t_user_id_edi~", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_positioning_off_the_bottom_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_positioning_off_the_bottom_t_well_sectio~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Позиционирование над забоем"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_reaming_slide", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + pressure_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимое давление, атм."), + differential_pressure = table.Column(type: "double precision", nullable: false, comment: "Перепад давления уставка, атм."), + tight = table.Column(type: "double precision", nullable: false, comment: "Затяжка, т."), + slacking_off = table.Column(type: "double precision", nullable: false, comment: "Посадка, т."), + torque_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимый момент, кН*м."), + reaming1_repetitions_count = table.Column(type: "double precision", nullable: false, comment: "Проработка 1. Количество повторений, шт."), + reaming1_rop_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 1. Скорость вверх, м/ч."), + reaming1_rop_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 1. Скорость вниз, м/ч."), + reaming1_rpm_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 1, Обороты, об/мин., Вверх"), + reaming1_rpm_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 1, Обороты, об/мин., Вниз"), + reaming1_flow_rate_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 1, Расход, л/с., Вверх"), + reaming1_flow_rate_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 1, Расход, л/с., Вниз"), + reaming1_interval = table.Column(type: "double precision", nullable: false, comment: "Проработка 1, Интервал проработки, м."), + reaming1_stop_point_off_bottom = table.Column(type: "double precision", nullable: false, comment: "Остановка над забоем, м."), + reaming2_repetitions_count = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Количество повторений, шт."), + reaming2_rop_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Скорость, м/ч., Вверх"), + reaming2_rop_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Скорость, м/ч., Вниз"), + reaming2_rpm_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Обороты, об/мин., Вверх"), + reaming2_rpm_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Обороты, об/мин., Вниз"), + reaming2_flow_rate_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Расход, л/с., Вверх"), + reaming2_flow_rate_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Расход, л/с., Вниз"), + reaming2_interval = table.Column(type: "double precision", nullable: false, comment: "Проработка 2, Интервал проработки, м."), + reaming2_stop_point_off_bottom = table.Column(type: "double precision", nullable: false, comment: "Остановка над забоем, м."), + reaming3_repetitions_count = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Количество повторений, шт."), + reaming3_rop_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Скорость, м/ч., Вверх"), + reaming3_rop_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Скорость, м/ч., Вниз"), + reaming3_rpm_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Обороты, об/мин., Вверх"), + reaming3_rpm_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Обороты, об/мин., Вниз"), + reaming3_flow_rate_up = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Расход, л/с., Вверх"), + reaming3_flow_rate_down = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Расход, л/с., Вниз"), + reaming3_interval = table.Column(type: "double precision", nullable: false, comment: "Проработка 3, Интервал проработки, м."), + reaming3_stop_point_off_bottom = table.Column(type: "double precision", nullable: false, comment: "Остановка над забоем, м."), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_reaming_slide", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_reaming_slide_t_process_map_plan_reaming~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_reaming_slide", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_reaming_slide_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_reaming_slide_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_reaming_slide_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_reaming_slide_t_well_section_type_id_wel~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "РТК проработка слайд"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_recording_static_measurement", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + measurement_recording_time = table.Column(type: "double precision", nullable: false, comment: "Время записи замера, сек"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_recording_static_measurement", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_recording_static_measurement_t_process_m~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_recording_static_measurement", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_recording_static_measurement_t_user_id_a~", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_recording_static_measurement_t_user_id_e~", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_recording_static_measurement_t_well_id_w~", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_recording_static_measurement_t_well_sect~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Запись статического замера"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_rotor_lowering_bit", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + pressure_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимое давление, атм."), + differential_pressure = table.Column(type: "double precision", nullable: false, comment: "Перепад давления уставка, атм."), + slacking_off = table.Column(type: "double precision", nullable: false, comment: "Посадка, т."), + torque_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимый момент, кН*м."), + rop_down = table.Column(type: "double precision", nullable: false, comment: "Скорость вниз, м/ч."), + rpm_down = table.Column(type: "double precision", nullable: false, comment: "Обороты вниз, об/мин."), + flow_rate_down = table.Column(type: "double precision", nullable: false, comment: "Расход вниз, л/с."), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_rotor_lowering_bit", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_lowering_bit_t_process_map_plan_ro~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_rotor_lowering_bit", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_lowering_bit_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_lowering_bit_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_lowering_bit_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_lowering_bit_t_well_section_type_i~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "РТК подход к забою в роторе"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_rotor_rpm_acceleration", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + zenit_angle = table.Column(type: "double precision", nullable: false, comment: "Зенитный угол, градусы"), + buckling = table.Column(type: "double precision", nullable: false, comment: "Складывание, м"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_rotor_rpm_acceleration", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_rpm_acceleration_t_process_map_pla~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_rotor_rpm_acceleration", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_rpm_acceleration_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_rpm_acceleration_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_rpm_acceleration_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_rpm_acceleration_t_well_section_ty~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Выход на обороты перед ротором"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_slide_lowering_bit", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + pressure_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимое давление, атм."), + differential_pressure = table.Column(type: "double precision", nullable: false, comment: "Перепад давления уставка, атм."), + rop_down = table.Column(type: "double precision", nullable: false, comment: "Скорость вниз, м/ч."), + flow_rate_down = table.Column(type: "double precision", nullable: false, comment: "Расход вниз, л/с."), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_slide_lowering_bit", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_lowering_bit_t_process_map_plan_sl~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_slide_lowering_bit", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_lowering_bit_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_lowering_bit_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_lowering_bit_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_lowering_bit_t_well_section_type_i~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "РТК подход к забою в слайде"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_static_measurement_output", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + signal_waiting_time = table.Column(type: "double precision", nullable: false, comment: "Время ожидания выхода сигнала с ТМС, сек."), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_static_measurement_output", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_static_measurement_output_t_process_map_~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_static_measurement_output", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_static_measurement_output_t_user_id_auth~", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_static_measurement_output_t_user_id_edit~", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_static_measurement_output_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_static_measurement_output_t_well_section~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Выход статического замера"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_switching_to_the_mode", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + ramp_time = table.Column(type: "double precision", nullable: false, comment: "Время выхода буровых насосов на плановый расход, сек."), + flow_rate = table.Column(type: "double precision", nullable: false, comment: "Расход, л/с"), + pressure_limit = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимое давление, атм."), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_switching_to_the_mode", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_switching_to_the_mode_t_process_map_plan~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_switching_to_the_mode", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_switching_to_the_mode_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_switching_to_the_mode_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_switching_to_the_mode_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_switching_to_the_mode_t_well_section_typ~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Выход на плановый расход"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_tf_orientation", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + tf_setpoint = table.Column(type: "double precision", nullable: false, comment: "Задание TF, град."), + spring = table.Column(type: "double precision", nullable: false, comment: "Пружина, град."), + pressure_max = table.Column(type: "double precision", nullable: false, comment: "Максимальное давление, атм."), + differential_pressure = table.Column(type: "double precision", nullable: false, comment: "Перепад давления, атм."), + tight = table.Column(type: "double precision", nullable: false, comment: "Затяжка, т."), + slacking_off = table.Column(type: "double precision", nullable: false, comment: "Посадка, т."), + torque_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимый момент, кН*м."), + repetitions_count = table.Column(type: "integer", nullable: false, comment: "Количество расхаживаний, шт."), + rop_up = table.Column(type: "double precision", nullable: false, comment: "Скорость вверх, м/ч."), + rop_down = table.Column(type: "double precision", nullable: false, comment: "Скорость вниз, м/ч."), + flow_rate_up = table.Column(type: "double precision", nullable: false, comment: "Расход вверх, л/с."), + flow_rate_down = table.Column(type: "double precision", nullable: false, comment: "Расход вниз, л/с."), + interval = table.Column(type: "double precision", nullable: false, comment: "Интервал расхаживания, м."), + stop_point_off_bottom = table.Column(type: "double precision", nullable: false, comment: "Остановка над забоем, м."), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_tf_orientation", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_tf_orientation_t_process_map_plan_tf_ori~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_tf_orientation", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_tf_orientation_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_tf_orientation_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_tf_orientation_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_tf_orientation_t_well_section_type_id_we~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Выставление"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_updating_noload_parameters", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + id_decline_socket_column = table.Column(type: "boolean", nullable: false, comment: "СПУСК ОК Да/Нет"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_updating_noload_parameters", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_updating_noload_parameters_t_process_map~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_updating_noload_parameters", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_updating_noload_parameters_t_user_id_aut~", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_updating_noload_parameters_t_user_id_edi~", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_updating_noload_parameters_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_updating_noload_parameters_t_well_sectio~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Обновление холостого хода"); + + migrationBuilder.CreateTable( + name: "t_process_map_shock_test", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + stick_slip = table.Column(type: "double precision", nullable: false, comment: "stickSlip"), + whirl = table.Column(type: "double precision", nullable: false, comment: "Whirl"), + axial_vibrations = table.Column(type: "double precision", nullable: false, comment: "Осевые вибрации"), + combined_vibrations = table.Column(type: "double precision", nullable: false, comment: "Комбинированные вибрации"), + weight_on_bit_min = table.Column(type: "double precision", nullable: false, comment: "Нагрузка минимальная, т"), + rpm_min = table.Column(type: "double precision", nullable: false, comment: "Минимальные обороты на ВСП, об/мин."), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_shock_test", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_shock_test_t_process_map_shock_test_id_previo~", + column: x => x.id_previous, + principalTable: "t_process_map_shock_test", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_shock_test_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_shock_test_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_shock_test_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_shock_test_t_well_section_type_id_wellsection~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "ShockTest"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_anti_crash_rotation_id_author", + table: "t_process_map_plan_anti_crash_rotation", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_anti_crash_rotation_id_editor", + table: "t_process_map_plan_anti_crash_rotation", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_anti_crash_rotation_id_previous", + table: "t_process_map_plan_anti_crash_rotation", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_anti_crash_rotation_id_well", + table: "t_process_map_plan_anti_crash_rotation", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_anti_crash_rotation_id_wellsection_type", + table: "t_process_map_plan_anti_crash_rotation", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_auto_hold_tf_id_author", + table: "t_process_map_plan_auto_hold_tf", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_auto_hold_tf_id_editor", + table: "t_process_map_plan_auto_hold_tf", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_auto_hold_tf_id_previous", + table: "t_process_map_plan_auto_hold_tf", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_auto_hold_tf_id_well", + table: "t_process_map_plan_auto_hold_tf", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_auto_hold_tf_id_wellsection_type", + table: "t_process_map_plan_auto_hold_tf", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_drilltest_id_author", + table: "t_process_map_plan_drilltest", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_drilltest_id_editor", + table: "t_process_map_plan_drilltest", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_drilltest_id_previous", + table: "t_process_map_plan_drilltest", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_drilltest_id_well", + table: "t_process_map_plan_drilltest", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_drilltest_id_wellsection_type", + table: "t_process_map_plan_drilltest", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_functions_damper_id_author", + table: "t_process_map_plan_functions_damper", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_functions_damper_id_editor", + table: "t_process_map_plan_functions_damper", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_functions_damper_id_previous", + table: "t_process_map_plan_functions_damper", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_functions_damper_id_well", + table: "t_process_map_plan_functions_damper", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_functions_damper_id_wellsection_type", + table: "t_process_map_plan_functions_damper", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_load_capacity_id_author", + table: "t_process_map_plan_load_capacity", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_load_capacity_id_editor", + table: "t_process_map_plan_load_capacity", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_load_capacity_id_previous", + table: "t_process_map_plan_load_capacity", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_load_capacity_id_well", + table: "t_process_map_plan_load_capacity", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_load_capacity_id_wellsection_type", + table: "t_process_map_plan_load_capacity", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_oscillation_angels_id_author", + table: "t_process_map_plan_operation_oscillation_angels", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_oscillation_angels_id_editor", + table: "t_process_map_plan_operation_oscillation_angels", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_oscillation_angels_id_previous", + table: "t_process_map_plan_operation_oscillation_angels", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_oscillation_angels_id_well", + table: "t_process_map_plan_operation_oscillation_angels", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_oscillation_angels_id_wellsect~", + table: "t_process_map_plan_operation_oscillation_angels", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_reaming_rotor_id_author", + table: "t_process_map_plan_operation_reaming_rotor", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_reaming_rotor_id_editor", + table: "t_process_map_plan_operation_reaming_rotor", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_reaming_rotor_id_previous", + table: "t_process_map_plan_operation_reaming_rotor", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_reaming_rotor_id_well", + table: "t_process_map_plan_operation_reaming_rotor", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_reaming_rotor_id_wellsection_t~", + table: "t_process_map_plan_operation_reaming_rotor", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_switching_off_the_pump_id_auth~", + table: "t_process_map_plan_operation_switching_off_the_pump", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_switching_off_the_pump_id_edit~", + table: "t_process_map_plan_operation_switching_off_the_pump", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_switching_off_the_pump_id_prev~", + table: "t_process_map_plan_operation_switching_off_the_pump", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_switching_off_the_pump_id_well", + table: "t_process_map_plan_operation_switching_off_the_pump", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_operation_switching_off_the_pump_id_well~", + table: "t_process_map_plan_operation_switching_off_the_pump", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_oscillation_id_author", + table: "t_process_map_plan_oscillation", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_oscillation_id_editor", + table: "t_process_map_plan_oscillation", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_oscillation_id_previous", + table: "t_process_map_plan_oscillation", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_oscillation_id_well", + table: "t_process_map_plan_oscillation", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_oscillation_id_wellsection_type", + table: "t_process_map_plan_oscillation", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_positioning_off_the_bottom_id_author", + table: "t_process_map_plan_positioning_off_the_bottom", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_positioning_off_the_bottom_id_editor", + table: "t_process_map_plan_positioning_off_the_bottom", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_positioning_off_the_bottom_id_previous", + table: "t_process_map_plan_positioning_off_the_bottom", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_positioning_off_the_bottom_id_well", + table: "t_process_map_plan_positioning_off_the_bottom", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_positioning_off_the_bottom_id_wellsectio~", + table: "t_process_map_plan_positioning_off_the_bottom", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_reaming_slide_id_author", + table: "t_process_map_plan_reaming_slide", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_reaming_slide_id_editor", + table: "t_process_map_plan_reaming_slide", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_reaming_slide_id_previous", + table: "t_process_map_plan_reaming_slide", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_reaming_slide_id_well", + table: "t_process_map_plan_reaming_slide", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_reaming_slide_id_wellsection_type", + table: "t_process_map_plan_reaming_slide", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_recording_static_measurement_id_author", + table: "t_process_map_plan_recording_static_measurement", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_recording_static_measurement_id_editor", + table: "t_process_map_plan_recording_static_measurement", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_recording_static_measurement_id_previous", + table: "t_process_map_plan_recording_static_measurement", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_recording_static_measurement_id_well", + table: "t_process_map_plan_recording_static_measurement", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_recording_static_measurement_id_wellsect~", + table: "t_process_map_plan_recording_static_measurement", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_lowering_bit_id_author", + table: "t_process_map_plan_rotor_lowering_bit", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_lowering_bit_id_editor", + table: "t_process_map_plan_rotor_lowering_bit", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_lowering_bit_id_previous", + table: "t_process_map_plan_rotor_lowering_bit", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_lowering_bit_id_well", + table: "t_process_map_plan_rotor_lowering_bit", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_lowering_bit_id_wellsection_type", + table: "t_process_map_plan_rotor_lowering_bit", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_rpm_acceleration_id_author", + table: "t_process_map_plan_rotor_rpm_acceleration", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_rpm_acceleration_id_editor", + table: "t_process_map_plan_rotor_rpm_acceleration", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_rpm_acceleration_id_previous", + table: "t_process_map_plan_rotor_rpm_acceleration", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_rpm_acceleration_id_well", + table: "t_process_map_plan_rotor_rpm_acceleration", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_rpm_acceleration_id_wellsection_ty~", + table: "t_process_map_plan_rotor_rpm_acceleration", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_lowering_bit_id_author", + table: "t_process_map_plan_slide_lowering_bit", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_lowering_bit_id_editor", + table: "t_process_map_plan_slide_lowering_bit", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_lowering_bit_id_previous", + table: "t_process_map_plan_slide_lowering_bit", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_lowering_bit_id_well", + table: "t_process_map_plan_slide_lowering_bit", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_lowering_bit_id_wellsection_type", + table: "t_process_map_plan_slide_lowering_bit", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_static_measurement_output_id_author", + table: "t_process_map_plan_static_measurement_output", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_static_measurement_output_id_editor", + table: "t_process_map_plan_static_measurement_output", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_static_measurement_output_id_previous", + table: "t_process_map_plan_static_measurement_output", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_static_measurement_output_id_well", + table: "t_process_map_plan_static_measurement_output", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_static_measurement_output_id_wellsection~", + table: "t_process_map_plan_static_measurement_output", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_switching_to_the_mode_id_author", + table: "t_process_map_plan_switching_to_the_mode", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_switching_to_the_mode_id_editor", + table: "t_process_map_plan_switching_to_the_mode", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_switching_to_the_mode_id_previous", + table: "t_process_map_plan_switching_to_the_mode", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_switching_to_the_mode_id_well", + table: "t_process_map_plan_switching_to_the_mode", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_switching_to_the_mode_id_wellsection_type", + table: "t_process_map_plan_switching_to_the_mode", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_tf_orientation_id_author", + table: "t_process_map_plan_tf_orientation", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_tf_orientation_id_editor", + table: "t_process_map_plan_tf_orientation", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_tf_orientation_id_previous", + table: "t_process_map_plan_tf_orientation", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_tf_orientation_id_well", + table: "t_process_map_plan_tf_orientation", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_tf_orientation_id_wellsection_type", + table: "t_process_map_plan_tf_orientation", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_updating_noload_parameters_id_author", + table: "t_process_map_plan_updating_noload_parameters", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_updating_noload_parameters_id_editor", + table: "t_process_map_plan_updating_noload_parameters", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_updating_noload_parameters_id_previous", + table: "t_process_map_plan_updating_noload_parameters", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_updating_noload_parameters_id_well", + table: "t_process_map_plan_updating_noload_parameters", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_updating_noload_parameters_id_wellsectio~", + table: "t_process_map_plan_updating_noload_parameters", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_shock_test_id_author", + table: "t_process_map_shock_test", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_shock_test_id_editor", + table: "t_process_map_shock_test", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_shock_test_id_previous", + table: "t_process_map_shock_test", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_shock_test_id_well", + table: "t_process_map_shock_test", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_shock_test_id_wellsection_type", + table: "t_process_map_shock_test", + column: "id_wellsection_type"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "t_process_map_plan_anti_crash_rotation"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_auto_hold_tf"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_drilltest"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_functions_damper"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_load_capacity"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_operation_oscillation_angels"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_operation_reaming_rotor"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_operation_switching_off_the_pump"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_oscillation"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_positioning_off_the_bottom"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_reaming_slide"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_recording_static_measurement"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_rotor_lowering_bit"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_rotor_rpm_acceleration"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_slide_lowering_bit"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_static_measurement_output"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_switching_to_the_mode"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_tf_orientation"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_updating_noload_parameters"); + + migrationBuilder.DropTable( + name: "t_process_map_shock_test"); + + migrationBuilder.DropColumn( + name: "buckling", + table: "t_process_map_plan_slide"); + + migrationBuilder.DropColumn( + name: "differential_pressure_max", + table: "t_process_map_plan_slide"); + + migrationBuilder.DropColumn( + name: "flow_rate_max", + table: "t_process_map_plan_slide"); + + migrationBuilder.DropColumn( + name: "pressure_max", + table: "t_process_map_plan_slide"); + + migrationBuilder.DropColumn( + name: "rop_max", + table: "t_process_map_plan_slide"); + + migrationBuilder.DropColumn( + name: "weight_on_bit_max", + table: "t_process_map_plan_slide"); + + migrationBuilder.RenameColumn( + name: "pressure_max", + table: "t_process_map_plan_rotor", + newName: "pressure_limit_max"); + + migrationBuilder.RenameColumn( + name: "weight_on_bit_max", + table: "t_process_map_plan_rotor", + newName: "weight_on_bit_limit_max"); + + migrationBuilder.RenameColumn( + name: "top_drive_torque_max", + table: "t_process_map_plan_rotor", + newName: "top_drive_torque_limit_max"); + + migrationBuilder.RenameColumn( + name: "rpm_max", + table: "t_process_map_plan_rotor", + newName: "revolutions_per_minute_limit_max"); + + migrationBuilder.RenameColumn( + name: "rpm", + table: "t_process_map_plan_rotor", + newName: "revolution_per_minute"); + + migrationBuilder.RenameColumn( + name: "rop_max", + table: "t_process_map_plan_rotor", + newName: "rop_limit_max"); + + migrationBuilder.RenameColumn( + name: "flow_rate_max", + table: "t_process_map_plan_rotor", + newName: "flow_rate_limit_max"); + + migrationBuilder.RenameColumn( + name: "differential_pressure_max", + table: "t_process_map_plan_rotor", + newName: "differential_pressure_limit_max"); + + migrationBuilder.AlterColumn( + name: "weight_on_bit", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + comment: "Нагрузка, т. Уставка", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Нагрузка уставка, т."); + + migrationBuilder.AlterColumn( + name: "flow_rate", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + comment: "Расход л/с. Уставка", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Расход уставка, л/с."); + + migrationBuilder.AlterColumn( + name: "differential_pressure", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + comment: "Перепад давления, атм. Уставка", + oldClrType: typeof(double), + oldType: "double precision", + oldComment: "Перепад давления уставка, атм."); + + migrationBuilder.AddColumn( + name: "differential_pressure_limit_max", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Перепад давления, атм. Ограничение"); + + migrationBuilder.AddColumn( + name: "flow_rate_limit_max", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Расход л/с. Ограничение"); + + migrationBuilder.AddColumn( + name: "pressure_limit_max", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Максимально допустимое давление, атм"); + + migrationBuilder.AddColumn( + name: "rop_limit_max", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Максимально допустимая скорость, м/ч"); + + migrationBuilder.AddColumn( + name: "tool_buckling", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Складывание инструмента, м"); + + migrationBuilder.AddColumn( + name: "weight_on_bit_limit_max", + table: "t_process_map_plan_slide", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Нагрузка, т. Ограничение"); + } + } +} diff --git a/AsbCloudDb/Migrations/20240701051003_Update_Tables_ProcessMapOperationsAndFunctions.Designer.cs b/AsbCloudDb/Migrations/20240701051003_Update_Tables_ProcessMapOperationsAndFunctions.Designer.cs new file mode 100644 index 00000000..60fdca14 --- /dev/null +++ b/AsbCloudDb/Migrations/20240701051003_Update_Tables_ProcessMapOperationsAndFunctions.Designer.cs @@ -0,0 +1,12977 @@ +// +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("20240701051003_Update_Tables_ProcessMapOperationsAndFunctions")] + partial class Update_Tables_ProcessMapOperationsAndFunctions + { + /// + 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.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", 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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("TopDriveRpmMin") + .HasColumnType("double precision") + .HasColumnName("top_drive_rpm_min") + .HasComment("Минимальные обороты ВСП, об/мин"); + + b.Property("TopDriveStartMinFlowRate") + .HasColumnType("double precision") + .HasColumnName("top_drive_start_min_flow_rate") + .HasComment("Минимальный расход для запуска оборотов ВСП, л/сек"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Максимально допустимый момент на ВСП при противоаварийном вращении, кН*м"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_anti_crash_rotation", t => + { + t.HasComment("Противоаварийное вращение"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", 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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("ZenithAngle") + .HasColumnType("double precision") + .HasColumnName("zenit_angle") + .HasComment("Зенитный угол, градусы"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_auto_hold_tf", t => + { + t.HasComment("Автоудержание TF"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", 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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("StickSlip") + .HasColumnType("double precision") + .HasColumnName("stick_slip") + .HasComment("StickSlip"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_functions_damper", t => + { + t.HasComment("Демпфер"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", 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("LengthStep") + .HasColumnType("double precision") + .HasColumnName("length_step") + .HasComment("Величина проходки шага, м."); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("RpmMin") + .HasColumnType("double precision") + .HasColumnName("rpm_min") + .HasComment("Минимальные обороты на ВСП, об/мин."); + + b.Property("RpmStepsCount") + .HasColumnType("integer") + .HasColumnName("rpm_steps_count") + .HasComment("Количество шагов оборотов на ВСП, об/мин."); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.Property("WeightOnBitStepsCount") + .HasColumnType("integer") + .HasColumnName("weight_on_bit_steps_count") + .HasComment("Количество шагов по нагрузке"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_drilltest", t => + { + t.HasComment("DrillTest"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", 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("Mode") + .HasColumnType("integer") + .HasColumnName("mode") + .HasComment("Режим Авто/Руч"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("OptimalOscillationAngle") + .HasColumnType("double precision") + .HasColumnName("optimal_oscillation_angle") + .HasComment("Оптимальный угол осцилляции, градусы"); + + b.Property("RpmLeft") + .HasColumnType("double precision") + .HasColumnName("Rpm_left") + .HasComment("Скорость влево, об/мин"); + + b.Property("RpmRight") + .HasColumnType("double precision") + .HasColumnName("Rpm​_right") + .HasComment("Скорость вправо, об/мин"); + + b.Property("TorqueMaxLeft") + .HasColumnType("double precision") + .HasColumnName("torque_max_left") + .HasComment("Ограничение момента влево, кН*м"); + + b.Property("TorqueMaxRight") + .HasColumnType("double precision") + .HasColumnName("torque_max_right") + .HasComment("Ограничение момента вправо, кН*м"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_oscillation", t => + { + t.HasComment("Осцилляция"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialVibrations") + .HasColumnType("double precision") + .HasColumnName("axial_vibrations") + .HasComment("Осевые вибрации"); + + b.Property("CombinedVibrations") + .HasColumnType("double precision") + .HasColumnName("combined_vibrations") + .HasComment("Комбинированные вибрации"); + + 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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("RpmMin") + .HasColumnType("double precision") + .HasColumnName("rpm_min") + .HasComment("Минимальные обороты на ВСП, об/мин."); + + b.Property("StickSlip") + .HasColumnType("double precision") + .HasColumnName("stick_slip") + .HasComment("stickSlip"); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.Property("Whirl") + .HasColumnType("double precision") + .HasColumnName("whirl") + .HasComment("Whirl"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_shock_test", t => + { + t.HasComment("ShockTest"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", 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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("SignalWaitingTime") + .HasColumnType("double precision") + .HasColumnName("signal_waiting_time") + .HasComment("Время ожидания выхода сигнала с ТМС, сек."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_static_measurement_output", t => + { + t.HasComment("Выход статического замера"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanUpdatingNoloadParameters", 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("IdDeclineSocketColumn") + .HasColumnType("boolean") + .HasColumnName("id_decline_socket_column") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_updating_noload_parameters", t => + { + t.HasComment("Обновление холостого хода"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", 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("DifferentialPressureMin") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_min") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("TimeLoadCapacityMin") + .HasColumnType("double precision") + .HasColumnName("time_load_capacity_min") + .HasComment("Время выработки минимальное, сек"); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_load_capacity", t => + { + t.HasComment("РТК выработка нагрузки"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", 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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП, об/мин., Уставка"); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП, об/мин., Ограничение"); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП, кН*м., Уставка"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП, кН*м., Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_oscillation_angels", t => + { + t.HasComment("Определение углов осцилляции"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("flow_rate_up") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RopUp") + .HasColumnType("double precision") + .HasColumnName("rop_up") + .HasComment("Скорость вверх, м/ч."); + + b.Property("RpmDown") + .HasColumnType("double precision") + .HasColumnName("rpm_down") + .HasComment("Обороты вниз, об/мин."); + + b.Property("RpmUp") + .HasColumnType("double precision") + .HasColumnName("rpm_up") + .HasComment("Обороты вверх, об/мин."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("StopOffTheBottom") + .HasColumnType("double precision") + .HasColumnName("stop_off_the_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_positioning_off_the_bottom", t => + { + t.HasComment("Позиционирование над забоем"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.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.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("Reaming1FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_down") + .HasComment("Проработка 1, Расход, л/с., Вниз"); + + b.Property("Reaming1FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_up") + .HasComment("Проработка 1, Расход, л/с., Вверх"); + + b.Property("Reaming1Interval") + .HasColumnType("double precision") + .HasColumnName("reaming1_interval") + .HasComment("Проработка 1, Интервал проработки, м."); + + b.Property("Reaming1RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming1_repetitions_count") + .HasComment("Проработка 1. Количество повторений, шт."); + + b.Property("Reaming1RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_down") + .HasComment("Проработка 1, Скорость, м/ч., Вниз"); + + b.Property("Reaming1RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_up") + .HasComment("Проработка 1. Скорость вверх, м/ч."); + + b.Property("Reaming1RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_down") + .HasComment("Проработка 1, Обороты, об/мин., Вниз"); + + b.Property("Reaming1RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_up") + .HasComment("Проработка 1, Обороты, об/мин., Вверх"); + + b.Property("Reaming1StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming1_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming2FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_down") + .HasComment("Проработка 2, Расход, л/с., Вниз"); + + b.Property("Reaming2FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_up") + .HasComment("Проработка 2, Расход, л/с., Вверх"); + + b.Property("Reaming2Interval") + .HasColumnType("double precision") + .HasColumnName("reaming2_interval") + .HasComment("Проработка 2, Интервал проработки, м."); + + b.Property("Reaming2RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming2_repetitions_count") + .HasComment("Проработка 2, Количество повторений, шт."); + + b.Property("Reaming2RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_down") + .HasComment("Проработка 2, Скорость, м/ч., Вниз"); + + b.Property("Reaming2RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_up") + .HasComment("Проработка 2, Скорость, м/ч., Вверх"); + + b.Property("Reaming2RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_down") + .HasComment("Проработка 2, Обороты, об/мин., Вниз"); + + b.Property("Reaming2RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_up") + .HasComment("Проработка 2, Обороты, об/мин., Вверх"); + + b.Property("Reaming2StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming2_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming3FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_down") + .HasComment("Проработка 3, Расход, л/с., Вниз"); + + b.Property("Reaming3FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_up") + .HasComment("Проработка 3, Расход, л/с., Вверх"); + + b.Property("Reaming3Interval") + .HasColumnType("double precision") + .HasColumnName("reaming3_interval") + .HasComment("Проработка 3, Интервал проработки, м."); + + b.Property("Reaming3RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming3_repetitions_count") + .HasComment("Проработка 3, Количество повторений, шт."); + + b.Property("Reaming3RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_down") + .HasComment("Проработка 3, Скорость, м/ч., Вниз"); + + b.Property("Reaming3RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_up") + .HasComment("Проработка 3, Скорость, м/ч., Вверх"); + + b.Property("Reaming3RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_down") + .HasComment("Проработка 3, Обороты, об/мин., Вниз"); + + b.Property("Reaming3RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_up") + .HasComment("Проработка 3, Обороты, об/мин., Вверх"); + + b.Property("Reaming3StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming3_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_reaming_rotor", t => + { + t.HasComment("РТК проработка ротор"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("Reaming1FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_down") + .HasComment("Проработка 1, Расход, л/с., Вниз"); + + b.Property("Reaming1FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_up") + .HasComment("Проработка 1, Расход, л/с., Вверх"); + + b.Property("Reaming1Interval") + .HasColumnType("double precision") + .HasColumnName("reaming1_interval") + .HasComment("Проработка 1, Интервал проработки, м."); + + b.Property("Reaming1RepetitionsCount") + .HasColumnType("double precision") + .HasColumnName("reaming1_repetitions_count") + .HasComment("Проработка 1. Количество повторений, шт."); + + b.Property("Reaming1RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_down") + .HasComment("Проработка 1. Скорость вниз, м/ч."); + + b.Property("Reaming1RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_up") + .HasComment("Проработка 1. Скорость вверх, м/ч."); + + b.Property("Reaming1RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_down") + .HasComment("Проработка 1, Обороты, об/мин., Вниз"); + + b.Property("Reaming1RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_up") + .HasComment("Проработка 1, Обороты, об/мин., Вверх"); + + b.Property("Reaming1StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming1_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming2FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_down") + .HasComment("Проработка 2, Расход, л/с., Вниз"); + + b.Property("Reaming2FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_up") + .HasComment("Проработка 2, Расход, л/с., Вверх"); + + b.Property("Reaming2Interval") + .HasColumnType("double precision") + .HasColumnName("reaming2_interval") + .HasComment("Проработка 2, Интервал проработки, м."); + + b.Property("Reaming2RepetitionsCount") + .HasColumnType("double precision") + .HasColumnName("reaming2_repetitions_count") + .HasComment("Проработка 2, Количество повторений, шт."); + + b.Property("Reaming2RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_down") + .HasComment("Проработка 2, Скорость, м/ч., Вниз"); + + b.Property("Reaming2RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_up") + .HasComment("Проработка 2, Скорость, м/ч., Вверх"); + + b.Property("Reaming2RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_down") + .HasComment("Проработка 2, Обороты, об/мин., Вниз"); + + b.Property("Reaming2RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_up") + .HasComment("Проработка 2, Обороты, об/мин., Вверх"); + + b.Property("Reaming2StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming2_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming3FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_down") + .HasComment("Проработка 3, Расход, л/с., Вниз"); + + b.Property("Reaming3FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_up") + .HasComment("Проработка 3, Расход, л/с., Вверх"); + + b.Property("Reaming3Interval") + .HasColumnType("double precision") + .HasColumnName("reaming3_interval") + .HasComment("Проработка 3, Интервал проработки, м."); + + b.Property("Reaming3RepetitionsCount") + .HasColumnType("double precision") + .HasColumnName("reaming3_repetitions_count") + .HasComment("Проработка 3, Количество повторений, шт."); + + b.Property("Reaming3RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_down") + .HasComment("Проработка 3, Скорость, м/ч., Вниз"); + + b.Property("Reaming3RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_up") + .HasComment("Проработка 3, Скорость, м/ч., Вверх"); + + b.Property("Reaming3RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_down") + .HasComment("Проработка 3, Обороты, об/мин., Вниз"); + + b.Property("Reaming3RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_up") + .HasComment("Проработка 3, Обороты, об/мин., Вверх"); + + b.Property("Reaming3StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming3_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_reaming_slide", t => + { + t.HasComment("РТК проработка слайд"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", 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("MeasurementRecordingTime") + .HasColumnType("double precision") + .HasColumnName("measurement_recording_time") + .HasComment("Время записи замера, сек"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_recording_static_measurement", t => + { + t.HasComment("Запись статического замера"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм. Уставка"); + + b.Property("DifferentialPressureMax") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_max") + .HasComment("Перепад давления, атм. Ограничение"); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход л/с. Уставка"); + + b.Property("FlowRateMax") + .HasColumnType("double precision") + .HasColumnName("flow_rate_max") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureLimitMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм"); + + b.Property("RopMax") + .HasColumnType("double precision") + .HasColumnName("rop_max") + .HasComment("Максимально допустимая скорость, м/ч"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП, об/мин. Уставка"); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП, об/мин. Ограничение"); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП, кН*м. Уставка"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП, кН*м. Ограничение"); + + b.Property("WeightOnBit") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit") + .HasComment("Нагрузка, т. Уставка"); + + b.Property("WeightOnBitMax") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_max") + .HasComment("Нагрузка, т. Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_rotor", t => + { + t.HasComment("РТК план бурение ротор"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotorLoweringBit", 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RpmDown") + .HasColumnType("double precision") + .HasColumnName("rpm_down") + .HasComment("Обороты вниз, об/мин."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_rotor_lowering_bit", t => + { + t.HasComment("РТК подход к забою в роторе"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotorRpmAcceleration", 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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП уставка, об/мин."); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП ограничение, об/мин."); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП уставка, кН*м."); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП ограничение, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_rotor_rpm_acceleration", t => + { + t.HasComment("Выход на обороты перед ротором"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Buckling") + .HasColumnType("double precision") + .HasColumnName("buckling") + .HasComment("Складывание инструмента, м."); + + 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("DifferentialPressureMax") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_max") + .HasComment("Перепад давления ограничение, атм."); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход уставка, л/с."); + + b.Property("FlowRateMax") + .HasColumnType("double precision") + .HasColumnName("flow_rate_max") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopMax") + .HasColumnType("double precision") + .HasColumnName("rop_max") + .HasComment("Максимально допустимая скорость, м/ч."); + + b.Property("Spring") + .HasColumnType("double precision") + .HasColumnName("spring") + .HasComment("Расчётная пружина, градус"); + + b.Property("WeightOnBit") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit") + .HasComment("Нагрузка уставка, т."); + + b.Property("WeightOnBitMax") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_max") + .HasComment("Нагрузка ограничение, т."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_slide", t => + { + t.HasComment("РТК план бурение слайд"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlideLoweringBit", 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_slide_lowering_bit", t => + { + t.HasComment("РТК подход к забою в слайде"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", 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("Duration") + .HasColumnType("double precision") + .HasColumnName("duration") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("ResidualPressureLimit") + .HasColumnType("double precision") + .HasColumnName("residual_pressure_limit") + .HasComment("Лимит остаточного давления, атм."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_switching_off_the_pump", t => + { + t.HasComment("Выключение насоса"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", 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("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_limit") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RampTime") + .HasColumnType("double precision") + .HasColumnName("ramp_time") + .HasComment("Время выхода буровых насосов на плановый расход, сек."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_switching_to_the_mode", t => + { + t.HasComment("Выход на плановый расход"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("flow_rate_up") + .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("Interval") + .HasColumnType("double precision") + .HasColumnName("interval") + .HasComment("Интервал расхаживания, м."); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление, атм."); + + b.Property("RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("repetitions_count") + .HasComment("Количество расхаживаний, шт."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RopUp") + .HasColumnType("double precision") + .HasColumnName("rop_up") + .HasComment("Скорость вверх, м/ч."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Spring") + .HasColumnType("double precision") + .HasColumnName("spring") + .HasComment("Пружина, град."); + + b.Property("StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("TFSetpoint") + .HasColumnType("double precision") + .HasColumnName("tf_setpoint") + .HasComment("Задание TF, град."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_tf_orientation", 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("IsHidden") + .HasColumnType("boolean"); + + 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, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "м/ч", + Name = "БУРЕНИЕ" + }, + new + { + Id = 3001, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "КРЕПЛЕНИЕ" + }, + new + { + Id = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ГФР" + }, + new + { + Id = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные операции" + }, + new + { + Id = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Непроизводительное время (НПВ)" + }, + new + { + Id = 3006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Заключительные работы" + }, + new + { + Id = 4000, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "КНБК" + }, + new + { + Id = 4001, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "м/ч", + Name = "Механическое. бурение" + }, + new + { + Id = 4002, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Статический замер" + }, + new + { + Id = 4003, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Нормализация диаметра скважины" + }, + new + { + Id = 4004, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наращивание" + }, + new + { + Id = 4005, + IdParent = 3001, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 4006, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск обсадной колонны" + }, + new + { + Id = 4018, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Крепление" + }, + new + { + Id = 4007, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Цементирование" + }, + new + { + Id = 4008, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные работы при креплении" + }, + new + { + Id = 4009, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка/разборка приборов ГИС" + }, + new + { + Id = 4010, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 4011, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ГИС" + }, + new + { + Id = 4012, + IdParent = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка, ОБР" + }, + new + { + Id = 4013, + IdParent = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные работы" + }, + new + { + Id = 4014, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт оборудования" + }, + new + { + Id = 4015, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Аварийные работы" + }, + new + { + Id = 4016, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Осложнение" + }, + new + { + Id = 4017, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Незаложенные в ГГД операции" + }, + new + { + Id = 4019, + IdParent = 3006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Заключительные операции" + }, + new + { + Id = 5000, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разборка КНБК" + }, + new + { + Id = 5001, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка КНБК" + }, + new + { + Id = 5002, + IdParent = 4001, + IsHidden = true, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение слайдом" + }, + new + { + Id = 5003, + IdParent = 4001, + IsHidden = true, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение ротором" + }, + new + { + Id = 5004, + IdParent = 4002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Замер ЗТС (запись MWD)" + }, + new + { + Id = 5005, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка перед наращиванием" + }, + new + { + Id = 5006, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка во время бурения" + }, + new + { + Id = 5007, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка" + }, + new + { + Id = 5008, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка во время бурения" + }, + new + { + Id = 5009, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка перед наращиванием" + }, + new + { + Id = 5010, + IdParent = 4004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наращивание" + }, + new + { + Id = 5011, + IdParent = 4004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Удержание в клиньях" + }, + new + { + Id = 5012, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем инструмента" + }, + new + { + Id = 5013, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем КНБК" + }, + new + { + Id = 5014, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск инструмента" + }, + new + { + Id = 5015, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск КНБК" + }, + new + { + Id = 5016, + IdParent = 4006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка при спуске ОК" + }, + new + { + Id = 5017, + IdParent = 4006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск ОК" + }, + new + { + Id = 5018, + IdParent = 4007, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ОЗЦ" + }, + new + { + Id = 5019, + IdParent = 4007, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Цементирование" + }, + new + { + Id = 5020, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка БИ" + }, + new + { + Id = 5021, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка ОК" + }, + new + { + Id = 5022, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при спуске ОК" + }, + new + { + Id = 5023, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при цементировании" + }, + new + { + Id = 5024, + IdParent = 4009, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разборка комплекса приборов ГИС" + }, + new + { + Id = 5025, + IdParent = 4009, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка комплекса приборов ГИС" + }, + new + { + Id = 5026, + IdParent = 4010, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем приборов ГИС (на трубах)" + }, + new + { + Id = 5027, + IdParent = 4010, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск приборов ГИС (на трубах)" + }, + new + { + Id = 5028, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на жестком кабеле" + }, + new + { + Id = 5029, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на кабеле" + }, + new + { + Id = 5030, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на трубах" + }, + new + { + Id = 5031, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Закачка/прокачка пачки" + }, + new + { + Id = 5032, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обработка БР" + }, + new + { + Id = 5033, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование ТС при бурении" + }, + new + { + Id = 5034, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перезапись гаммы-каротажа" + }, + new + { + Id = 5035, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Приготовление БР" + }, + new + { + Id = 5036, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка" + }, + new + { + Id = 5037, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разбуривание тех.оснастки" + }, + new + { + Id = 5038, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск инструмента с проработкой" + }, + new + { + Id = 5039, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ВМР" + }, + new + { + Id = 5040, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Демонтаж ПВО" + }, + new + { + Id = 5041, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Долив затруба при подъёме" + }, + new + { + Id = 5042, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Монтаж ПВО" + }, + new + { + Id = 5043, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наработка жёлоба" + }, + new + { + Id = 5044, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обвязка устья с циркуляционной системой" + }, + new + { + Id = 5045, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Оборудование устья" + }, + new + { + Id = 5046, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка ПВО" + }, + new + { + Id = 5047, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перемонтаж ПВО " + }, + new + { + Id = 5048, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перетяжка талевого каната" + }, + new + { + Id = 5049, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при сборке КНБК" + }, + new + { + Id = 5050, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Полная замена талевого каната" + }, + new + { + Id = 5051, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПР перед забуркой направления" + }, + new + { + Id = 5052, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Продувка манифольда" + }, + new + { + Id = 5053, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Срезка" + }, + new + { + Id = 5054, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Тайм-дриллинг" + }, + new + { + Id = 5055, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Тех.отстой" + }, + new + { + Id = 5056, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Учебная тревога \"Выброс\"" + }, + new + { + Id = 5057, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Чистка ЦСГО/емкостного блока" + }, + new + { + Id = 5058, + IdParent = 4014, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт бурового оборудования" + }, + new + { + Id = 5059, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ловильные работы" + }, + new + { + Id = 5060, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ожидание" + }, + new + { + Id = 5061, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Определение места прихвата и ЛМ" + }, + new + { + Id = 5062, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Работа яссом" + }, + new + { + Id = 5063, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Расхаживание" + }, + new + { + Id = 5064, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - колокол" + }, + new + { + Id = 5065, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - метчик" + }, + new + { + Id = 5066, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - овершот" + }, + new + { + Id = 5067, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - труболовка" + }, + new + { + Id = 5068, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Торпедирование (встряхивание)" + }, + new + { + Id = 5069, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Торпедирование (отстрел)" + }, + new + { + Id = 5070, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Установка ванн" + }, + new + { + Id = 5071, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Фрезеровка" + }, + new + { + Id = 5072, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Контролируемое ГНВП" + }, + new + { + Id = 5073, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Поглощение" + }, + new + { + Id = 5074, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сальникообразование" + }, + new + { + Id = 5075, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Утяжеление БР" + }, + new + { + Id = 5076, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "НПВ / прочее" + }, + new + { + Id = 5077, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обработка раствора (несоответствие параметров)" + }, + new + { + Id = 5078, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "подъем ОК" + }, + new + { + Id = 5079, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ревизия КНБК/инструмента/ЗТС" + }, + new + { + Id = 5082, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка устройства ориентирования КО" + }, + new + { + Id = 5083, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка принудительная" + }, + new + { + Id = 5084, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка подъем БИ, продувка" + }, + new + { + Id = 5085, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск бурильного инструмента со сборкой с мостков" + }, + new + { + Id = 5086, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем БИ с выбросом на мостки" + }, + new + { + Id = 5087, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск БИ со сборкой с мостков" + }, + new + { + Id = 5088, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка и спуск ТБТ" + }, + new + { + Id = 5089, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск КО на транспортной колонне" + }, + new + { + Id = 5090, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Отворот допускной трубы" + }, + new + { + Id = 5091, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Активация подвески, опрессовка" + }, + new + { + Id = 5092, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Монтаж, опрессовка ФА" + }, + new + { + Id = 5093, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка хвостовика 114мм (согласно схеме)" + }, + new + { + Id = 5094, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР к спуску УЭЦН" + }, + new + { + Id = 5095, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Активация подвески (потайной колонны, хвостовика)" + }, + new + { + Id = 5096, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонирование перед спуском" + }, + new + { + Id = 5097, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка - перевод скважины на новый раствор" + }, + new + { + Id = 5098, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка БИ с мостков на подсвечник" + }, + new + { + Id = 5099, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подготовка ствола скважины. Перезапись ГК в интервале установки КО." + }, + new + { + Id = 5100, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Смена рабочего переводника ВСП" + }, + new + { + Id = 5101, + IdParent = 4014, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт" + }, + new + { + Id = 5102, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск пакера" + }, + new + { + Id = 5103, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Запись гамма-каратожа" + }, + new + { + Id = 5104, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонирование спуск БИ" + }, + new + { + Id = 5105, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка клин-отклонителя" + }, + new + { + Id = 5106, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование и посадка клина-отклонителя" + }, + new + { + Id = 5107, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Протяжка подъемного патрубка подвески" + }, + new + { + Id = 5108, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем клина-отклонителя" + }, + new + { + Id = 5109, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Стыковка стингера с хвостовиком основного ствола" + }, + new + { + Id = 5110, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование и установка стыковочного узла хвостовика" + }, + new + { + Id = 5111, + IdParent = 4001, + IsHidden = false, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение с отбором керна" + }, + new + { + Id = 5112, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Работа пакером в обсадной колонне" + }, + new + { + Id = 5113, + IdParent = 4001, + IsHidden = false, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение" + }, + new + { + Id = 5114, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ТО оборудования" + }, + new + { + Id = 5115, + IdParent = 4019, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск НКТ" + }, + new + { + Id = 5116, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вырезка окна" + }, + new + { + Id = 5117, + IdParent = 4013, + IsHidden = false, + 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.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", 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.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", "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.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", 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.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", "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.ProcessMapPlan.Functions.ProcessMapPlanDamper", 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.ProcessMapPlan.Functions.ProcessMapPlanDamper", "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.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", 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.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", "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.ProcessMapPlan.Functions.ProcessMapPlanOscillation", 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.ProcessMapPlan.Functions.ProcessMapPlanOscillation", "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.ProcessMapPlan.Functions.ProcessMapPlanShockTest", 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.ProcessMapPlan.Functions.ProcessMapPlanShockTest", "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.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", 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.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", "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.ProcessMapPlan.Functions.ProcessMapPlanUpdatingNoloadParameters", 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.ProcessMapPlan.Functions.ProcessMapPlanUpdatingNoloadParameters", "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.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", 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.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", "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.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", 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.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", "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.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", 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.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", "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.ProcessMapPlan.Operations.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.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", 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.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", "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.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", 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.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", "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.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", 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.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", "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.ProcessMapPlan.Operations.ProcessMapPlanRotor", 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.ProcessMapPlan.Operations.ProcessMapPlanRotor", "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.ProcessMapPlan.Operations.ProcessMapPlanRotorLoweringBit", 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.ProcessMapPlan.Operations.ProcessMapPlanRotorLoweringBit", "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.ProcessMapPlan.Operations.ProcessMapPlanRotorRpmAcceleration", 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.ProcessMapPlan.Operations.ProcessMapPlanRotorRpmAcceleration", "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.ProcessMapPlan.Operations.ProcessMapPlanSlide", 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.ProcessMapPlan.Operations.ProcessMapPlanSlide", "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.ProcessMapPlan.Operations.ProcessMapPlanSlideLoweringBit", 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.ProcessMapPlan.Operations.ProcessMapPlanSlideLoweringBit", "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.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", 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) + .HasConstraintName("FK_t_process_map_plan_operation_switching_off_the_pump_t_user~1"); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", "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() + .HasConstraintName("FK_t_process_map_plan_operation_switching_off_the_pump_t_well~1"); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", 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.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", "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.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", 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.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", "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.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/20240701051003_Update_Tables_ProcessMapOperationsAndFunctions.cs b/AsbCloudDb/Migrations/20240701051003_Update_Tables_ProcessMapOperationsAndFunctions.cs new file mode 100644 index 00000000..14848042 --- /dev/null +++ b/AsbCloudDb/Migrations/20240701051003_Update_Tables_ProcessMapOperationsAndFunctions.cs @@ -0,0 +1,142 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace AsbCloudDb.Migrations +{ + /// + public partial class Update_Tables_ProcessMapOperationsAndFunctions : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "buckling", + table: "t_process_map_plan_rotor_rpm_acceleration"); + + migrationBuilder.DropColumn( + name: "zenit_angle", + table: "t_process_map_plan_rotor_rpm_acceleration"); + + migrationBuilder.AddColumn( + name: "note", + table: "t_process_map_plan_tf_orientation", + type: "character varying(1024)", + maxLength: 1024, + nullable: false, + defaultValue: "", + comment: "Примечание"); + + migrationBuilder.AddColumn( + name: "note", + table: "t_process_map_plan_static_measurement_output", + type: "character varying(1024)", + maxLength: 1024, + nullable: false, + defaultValue: "", + comment: "Примечание"); + + migrationBuilder.AddColumn( + name: "rpm", + table: "t_process_map_plan_rotor_rpm_acceleration", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Обороты на ВСП уставка, об/мин."); + + migrationBuilder.AddColumn( + name: "rpm_max", + table: "t_process_map_plan_rotor_rpm_acceleration", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Обороты на ВСП ограничение, об/мин."); + + migrationBuilder.AddColumn( + name: "top_drive_torque", + table: "t_process_map_plan_rotor_rpm_acceleration", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Момент на ВСП уставка, кН*м."); + + migrationBuilder.AddColumn( + name: "top_drive_torque_max", + table: "t_process_map_plan_rotor_rpm_acceleration", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Момент на ВСП ограничение, кН*м."); + + migrationBuilder.AddColumn( + name: "note", + table: "t_process_map_plan_operation_switching_off_the_pump", + type: "character varying(1024)", + maxLength: 1024, + nullable: false, + defaultValue: "", + comment: "Примечание"); + + migrationBuilder.AddColumn( + name: "note", + table: "t_process_map_plan_anti_crash_rotation", + type: "character varying(1024)", + maxLength: 1024, + nullable: false, + defaultValue: "", + comment: "Примечание"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "note", + table: "t_process_map_plan_tf_orientation"); + + migrationBuilder.DropColumn( + name: "note", + table: "t_process_map_plan_static_measurement_output"); + + migrationBuilder.DropColumn( + name: "rpm", + table: "t_process_map_plan_rotor_rpm_acceleration"); + + migrationBuilder.DropColumn( + name: "rpm_max", + table: "t_process_map_plan_rotor_rpm_acceleration"); + + migrationBuilder.DropColumn( + name: "top_drive_torque", + table: "t_process_map_plan_rotor_rpm_acceleration"); + + migrationBuilder.DropColumn( + name: "top_drive_torque_max", + table: "t_process_map_plan_rotor_rpm_acceleration"); + + migrationBuilder.DropColumn( + name: "note", + table: "t_process_map_plan_operation_switching_off_the_pump"); + + migrationBuilder.DropColumn( + name: "note", + table: "t_process_map_plan_anti_crash_rotation"); + + migrationBuilder.AddColumn( + name: "buckling", + table: "t_process_map_plan_rotor_rpm_acceleration", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Складывание, м"); + + migrationBuilder.AddColumn( + name: "zenit_angle", + table: "t_process_map_plan_rotor_rpm_acceleration", + type: "double precision", + nullable: false, + defaultValue: 0.0, + comment: "Зенитный угол, градусы"); + } + } +} diff --git a/AsbCloudDb/Migrations/20240701104026_Remove_some_processMapsPlan.Designer.cs b/AsbCloudDb/Migrations/20240701104026_Remove_some_processMapsPlan.Designer.cs new file mode 100644 index 00000000..f8d84fcc --- /dev/null +++ b/AsbCloudDb/Migrations/20240701104026_Remove_some_processMapsPlan.Designer.cs @@ -0,0 +1,12243 @@ +// +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("20240701104026_Remove_some_processMapsPlan")] + partial class Remove_some_processMapsPlan + { + /// + 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.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", 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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("TopDriveRpmMin") + .HasColumnType("double precision") + .HasColumnName("top_drive_rpm_min") + .HasComment("Минимальные обороты ВСП, об/мин"); + + b.Property("TopDriveStartMinFlowRate") + .HasColumnType("double precision") + .HasColumnName("top_drive_start_min_flow_rate") + .HasComment("Минимальный расход для запуска оборотов ВСП, л/сек"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Максимально допустимый момент на ВСП при противоаварийном вращении, кН*м"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_anti_crash_rotation", t => + { + t.HasComment("Противоаварийное вращение"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", 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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("ZenithAngle") + .HasColumnType("double precision") + .HasColumnName("zenit_angle") + .HasComment("Зенитный угол, градусы"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_auto_hold_tf", t => + { + t.HasComment("Автоудержание TF"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", 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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("StickSlip") + .HasColumnType("double precision") + .HasColumnName("stick_slip") + .HasComment("StickSlip"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_functions_damper", t => + { + t.HasComment("Демпфер"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", 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("LengthStep") + .HasColumnType("double precision") + .HasColumnName("length_step") + .HasComment("Величина проходки шага, м."); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("RpmMin") + .HasColumnType("double precision") + .HasColumnName("rpm_min") + .HasComment("Минимальные обороты на ВСП, об/мин."); + + b.Property("RpmStepsCount") + .HasColumnType("integer") + .HasColumnName("rpm_steps_count") + .HasComment("Количество шагов оборотов на ВСП, об/мин."); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.Property("WeightOnBitStepsCount") + .HasColumnType("integer") + .HasColumnName("weight_on_bit_steps_count") + .HasComment("Количество шагов по нагрузке"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_drilltest", t => + { + t.HasComment("DrillTest"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", 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("Mode") + .HasColumnType("integer") + .HasColumnName("mode") + .HasComment("Режим Авто/Руч"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("OptimalOscillationAngle") + .HasColumnType("double precision") + .HasColumnName("optimal_oscillation_angle") + .HasComment("Оптимальный угол осцилляции, градусы"); + + b.Property("RpmLeft") + .HasColumnType("double precision") + .HasColumnName("Rpm_left") + .HasComment("Скорость влево, об/мин"); + + b.Property("RpmRight") + .HasColumnType("double precision") + .HasColumnName("Rpm​_right") + .HasComment("Скорость вправо, об/мин"); + + b.Property("TorqueMaxLeft") + .HasColumnType("double precision") + .HasColumnName("torque_max_left") + .HasComment("Ограничение момента влево, кН*м"); + + b.Property("TorqueMaxRight") + .HasColumnType("double precision") + .HasColumnName("torque_max_right") + .HasComment("Ограничение момента вправо, кН*м"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_oscillation", t => + { + t.HasComment("Осцилляция"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialVibrations") + .HasColumnType("double precision") + .HasColumnName("axial_vibrations") + .HasComment("Осевые вибрации"); + + b.Property("CombinedVibrations") + .HasColumnType("double precision") + .HasColumnName("combined_vibrations") + .HasComment("Комбинированные вибрации"); + + 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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("RpmMin") + .HasColumnType("double precision") + .HasColumnName("rpm_min") + .HasComment("Минимальные обороты на ВСП, об/мин."); + + b.Property("StickSlip") + .HasColumnType("double precision") + .HasColumnName("stick_slip") + .HasComment("stickSlip"); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.Property("Whirl") + .HasColumnType("double precision") + .HasColumnName("whirl") + .HasComment("Whirl"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_shock_test", t => + { + t.HasComment("ShockTest"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", 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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("SignalWaitingTime") + .HasColumnType("double precision") + .HasColumnName("signal_waiting_time") + .HasComment("Время ожидания выхода сигнала с ТМС, сек."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_static_measurement_output", t => + { + t.HasComment("Выход статического замера"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", 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("DifferentialPressureMin") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_min") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("TimeLoadCapacityMin") + .HasColumnType("double precision") + .HasColumnName("time_load_capacity_min") + .HasComment("Время выработки минимальное, сек"); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_load_capacity", t => + { + t.HasComment("РТК выработка нагрузки"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", 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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП, об/мин., Уставка"); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП, об/мин., Ограничение"); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП, кН*м., Уставка"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП, кН*м., Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_oscillation_angels", t => + { + t.HasComment("Определение углов осцилляции"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("flow_rate_up") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RopUp") + .HasColumnType("double precision") + .HasColumnName("rop_up") + .HasComment("Скорость вверх, м/ч."); + + b.Property("RpmDown") + .HasColumnType("double precision") + .HasColumnName("rpm_down") + .HasComment("Обороты вниз, об/мин."); + + b.Property("RpmUp") + .HasColumnType("double precision") + .HasColumnName("rpm_up") + .HasComment("Обороты вверх, об/мин."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("StopOffTheBottom") + .HasColumnType("double precision") + .HasColumnName("stop_off_the_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_positioning_off_the_bottom", t => + { + t.HasComment("Позиционирование над забоем"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("Reaming1FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_down") + .HasComment("Проработка 1, Расход, л/с., Вниз"); + + b.Property("Reaming1FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_up") + .HasComment("Проработка 1, Расход, л/с., Вверх"); + + b.Property("Reaming1Interval") + .HasColumnType("double precision") + .HasColumnName("reaming1_interval") + .HasComment("Проработка 1, Интервал проработки, м."); + + b.Property("Reaming1RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming1_repetitions_count") + .HasComment("Проработка 1. Количество повторений, шт."); + + b.Property("Reaming1RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_down") + .HasComment("Проработка 1, Скорость, м/ч., Вниз"); + + b.Property("Reaming1RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_up") + .HasComment("Проработка 1. Скорость вверх, м/ч."); + + b.Property("Reaming1RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_down") + .HasComment("Проработка 1, Обороты, об/мин., Вниз"); + + b.Property("Reaming1RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_up") + .HasComment("Проработка 1, Обороты, об/мин., Вверх"); + + b.Property("Reaming1StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming1_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming2FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_down") + .HasComment("Проработка 2, Расход, л/с., Вниз"); + + b.Property("Reaming2FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_up") + .HasComment("Проработка 2, Расход, л/с., Вверх"); + + b.Property("Reaming2Interval") + .HasColumnType("double precision") + .HasColumnName("reaming2_interval") + .HasComment("Проработка 2, Интервал проработки, м."); + + b.Property("Reaming2RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming2_repetitions_count") + .HasComment("Проработка 2, Количество повторений, шт."); + + b.Property("Reaming2RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_down") + .HasComment("Проработка 2, Скорость, м/ч., Вниз"); + + b.Property("Reaming2RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_up") + .HasComment("Проработка 2, Скорость, м/ч., Вверх"); + + b.Property("Reaming2RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_down") + .HasComment("Проработка 2, Обороты, об/мин., Вниз"); + + b.Property("Reaming2RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_up") + .HasComment("Проработка 2, Обороты, об/мин., Вверх"); + + b.Property("Reaming2StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming2_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming3FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_down") + .HasComment("Проработка 3, Расход, л/с., Вниз"); + + b.Property("Reaming3FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_up") + .HasComment("Проработка 3, Расход, л/с., Вверх"); + + b.Property("Reaming3Interval") + .HasColumnType("double precision") + .HasColumnName("reaming3_interval") + .HasComment("Проработка 3, Интервал проработки, м."); + + b.Property("Reaming3RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming3_repetitions_count") + .HasComment("Проработка 3, Количество повторений, шт."); + + b.Property("Reaming3RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_down") + .HasComment("Проработка 3, Скорость, м/ч., Вниз"); + + b.Property("Reaming3RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_up") + .HasComment("Проработка 3, Скорость, м/ч., Вверх"); + + b.Property("Reaming3RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_down") + .HasComment("Проработка 3, Обороты, об/мин., Вниз"); + + b.Property("Reaming3RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_up") + .HasComment("Проработка 3, Обороты, об/мин., Вверх"); + + b.Property("Reaming3StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming3_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_reaming_rotor", t => + { + t.HasComment("РТК проработка ротор"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("Reaming1FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_down") + .HasComment("Проработка 1, Расход, л/с., Вниз"); + + b.Property("Reaming1FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_up") + .HasComment("Проработка 1, Расход, л/с., Вверх"); + + b.Property("Reaming1Interval") + .HasColumnType("double precision") + .HasColumnName("reaming1_interval") + .HasComment("Проработка 1, Интервал проработки, м."); + + b.Property("Reaming1RepetitionsCount") + .HasColumnType("double precision") + .HasColumnName("reaming1_repetitions_count") + .HasComment("Проработка 1. Количество повторений, шт."); + + b.Property("Reaming1RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_down") + .HasComment("Проработка 1. Скорость вниз, м/ч."); + + b.Property("Reaming1RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_up") + .HasComment("Проработка 1. Скорость вверх, м/ч."); + + b.Property("Reaming1RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_down") + .HasComment("Проработка 1, Обороты, об/мин., Вниз"); + + b.Property("Reaming1RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_up") + .HasComment("Проработка 1, Обороты, об/мин., Вверх"); + + b.Property("Reaming1StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming1_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming2FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_down") + .HasComment("Проработка 2, Расход, л/с., Вниз"); + + b.Property("Reaming2FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_up") + .HasComment("Проработка 2, Расход, л/с., Вверх"); + + b.Property("Reaming2Interval") + .HasColumnType("double precision") + .HasColumnName("reaming2_interval") + .HasComment("Проработка 2, Интервал проработки, м."); + + b.Property("Reaming2RepetitionsCount") + .HasColumnType("double precision") + .HasColumnName("reaming2_repetitions_count") + .HasComment("Проработка 2, Количество повторений, шт."); + + b.Property("Reaming2RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_down") + .HasComment("Проработка 2, Скорость, м/ч., Вниз"); + + b.Property("Reaming2RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_up") + .HasComment("Проработка 2, Скорость, м/ч., Вверх"); + + b.Property("Reaming2RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_down") + .HasComment("Проработка 2, Обороты, об/мин., Вниз"); + + b.Property("Reaming2RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_up") + .HasComment("Проработка 2, Обороты, об/мин., Вверх"); + + b.Property("Reaming2StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming2_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming3FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_down") + .HasComment("Проработка 3, Расход, л/с., Вниз"); + + b.Property("Reaming3FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_up") + .HasComment("Проработка 3, Расход, л/с., Вверх"); + + b.Property("Reaming3Interval") + .HasColumnType("double precision") + .HasColumnName("reaming3_interval") + .HasComment("Проработка 3, Интервал проработки, м."); + + b.Property("Reaming3RepetitionsCount") + .HasColumnType("double precision") + .HasColumnName("reaming3_repetitions_count") + .HasComment("Проработка 3, Количество повторений, шт."); + + b.Property("Reaming3RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_down") + .HasComment("Проработка 3, Скорость, м/ч., Вниз"); + + b.Property("Reaming3RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_up") + .HasComment("Проработка 3, Скорость, м/ч., Вверх"); + + b.Property("Reaming3RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_down") + .HasComment("Проработка 3, Обороты, об/мин., Вниз"); + + b.Property("Reaming3RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_up") + .HasComment("Проработка 3, Обороты, об/мин., Вверх"); + + b.Property("Reaming3StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming3_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_reaming_slide", t => + { + t.HasComment("РТК проработка слайд"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", 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("MeasurementRecordingTime") + .HasColumnType("double precision") + .HasColumnName("measurement_recording_time") + .HasComment("Время записи замера, сек"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_recording_static_measurement", t => + { + t.HasComment("Запись статического замера"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм. Уставка"); + + b.Property("DifferentialPressureMax") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_max") + .HasComment("Перепад давления, атм. Ограничение"); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход л/с. Уставка"); + + b.Property("FlowRateMax") + .HasColumnType("double precision") + .HasColumnName("flow_rate_max") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм"); + + b.Property("RopMax") + .HasColumnType("double precision") + .HasColumnName("rop_max") + .HasComment("Максимально допустимая скорость, м/ч"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП, об/мин. Уставка"); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП, об/мин. Ограничение"); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП, кН*м. Уставка"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП, кН*м. Ограничение"); + + b.Property("WeightOnBit") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit") + .HasComment("Нагрузка, т. Уставка"); + + b.Property("WeightOnBitMax") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_max") + .HasComment("Нагрузка, т. Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_rotor", t => + { + t.HasComment("РТК план бурение ротор"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Buckling") + .HasColumnType("double precision") + .HasColumnName("buckling") + .HasComment("Складывание инструмента, м."); + + 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("DifferentialPressureMax") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_max") + .HasComment("Перепад давления ограничение, атм."); + + b.Property("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .HasComment("Расход уставка, л/с."); + + b.Property("FlowRateMax") + .HasColumnType("double precision") + .HasColumnName("flow_rate_max") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopMax") + .HasColumnType("double precision") + .HasColumnName("rop_max") + .HasComment("Максимально допустимая скорость, м/ч."); + + b.Property("Spring") + .HasColumnType("double precision") + .HasColumnName("spring") + .HasComment("Расчётная пружина, градус"); + + b.Property("WeightOnBit") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit") + .HasComment("Нагрузка уставка, т."); + + b.Property("WeightOnBitMax") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_max") + .HasComment("Нагрузка ограничение, т."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_slide", t => + { + t.HasComment("РТК план бурение слайд"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", 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("Duration") + .HasColumnType("double precision") + .HasColumnName("duration") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("ResidualPressureLimit") + .HasColumnType("double precision") + .HasColumnName("residual_pressure_limit") + .HasComment("Лимит остаточного давления, атм."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_switching_off_the_pump", t => + { + t.HasComment("Выключение насоса"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", 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("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_limit") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RampTime") + .HasColumnType("double precision") + .HasColumnName("ramp_time") + .HasComment("Время выхода буровых насосов на плановый расход, сек."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_switching_to_the_mode", t => + { + t.HasComment("Выход на плановый расход"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("flow_rate_up") + .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("Interval") + .HasColumnType("double precision") + .HasColumnName("interval") + .HasComment("Интервал расхаживания, м."); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление, атм."); + + b.Property("RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("repetitions_count") + .HasComment("Количество расхаживаний, шт."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RopUp") + .HasColumnType("double precision") + .HasColumnName("rop_up") + .HasComment("Скорость вверх, м/ч."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Spring") + .HasColumnType("double precision") + .HasColumnName("spring") + .HasComment("Пружина, град."); + + b.Property("StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("TFSetpoint") + .HasColumnType("double precision") + .HasColumnName("tf_setpoint") + .HasComment("Задание TF, град."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_tf_orientation", 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("IsHidden") + .HasColumnType("boolean"); + + 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, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "м/ч", + Name = "БУРЕНИЕ" + }, + new + { + Id = 3001, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "КРЕПЛЕНИЕ" + }, + new + { + Id = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ГФР" + }, + new + { + Id = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные операции" + }, + new + { + Id = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Непроизводительное время (НПВ)" + }, + new + { + Id = 3006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Заключительные работы" + }, + new + { + Id = 4000, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "КНБК" + }, + new + { + Id = 4001, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "м/ч", + Name = "Механическое. бурение" + }, + new + { + Id = 4002, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Статический замер" + }, + new + { + Id = 4003, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Нормализация диаметра скважины" + }, + new + { + Id = 4004, + IdParent = 3000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наращивание" + }, + new + { + Id = 4005, + IdParent = 3001, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 4006, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск обсадной колонны" + }, + new + { + Id = 4018, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Крепление" + }, + new + { + Id = 4007, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Цементирование" + }, + new + { + Id = 4008, + IdParent = 3002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные работы при креплении" + }, + new + { + Id = 4009, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка/разборка приборов ГИС" + }, + new + { + Id = 4010, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО" + }, + new + { + Id = 4011, + IdParent = 3003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ГИС" + }, + new + { + Id = 4012, + IdParent = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка, ОБР" + }, + new + { + Id = 4013, + IdParent = 3004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вспомогательные работы" + }, + new + { + Id = 4014, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт оборудования" + }, + new + { + Id = 4015, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Аварийные работы" + }, + new + { + Id = 4016, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Осложнение" + }, + new + { + Id = 4017, + IdParent = 3005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Незаложенные в ГГД операции" + }, + new + { + Id = 4019, + IdParent = 3006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Заключительные операции" + }, + new + { + Id = 5000, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разборка КНБК" + }, + new + { + Id = 5001, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка КНБК" + }, + new + { + Id = 5002, + IdParent = 4001, + IsHidden = true, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение слайдом" + }, + new + { + Id = 5003, + IdParent = 4001, + IsHidden = true, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение ротором" + }, + new + { + Id = 5004, + IdParent = 4002, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Замер ЗТС (запись MWD)" + }, + new + { + Id = 5005, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка перед наращиванием" + }, + new + { + Id = 5006, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка во время бурения" + }, + new + { + Id = 5007, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка" + }, + new + { + Id = 5008, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка во время бурения" + }, + new + { + Id = 5009, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка перед наращиванием" + }, + new + { + Id = 5010, + IdParent = 4004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наращивание" + }, + new + { + Id = 5011, + IdParent = 4004, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Удержание в клиньях" + }, + new + { + Id = 5012, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем инструмента" + }, + new + { + Id = 5013, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем КНБК" + }, + new + { + Id = 5014, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск инструмента" + }, + new + { + Id = 5015, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск КНБК" + }, + new + { + Id = 5016, + IdParent = 4006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка при спуске ОК" + }, + new + { + Id = 5017, + IdParent = 4006, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск ОК" + }, + new + { + Id = 5018, + IdParent = 4007, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ОЗЦ" + }, + new + { + Id = 5019, + IdParent = 4007, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Цементирование" + }, + new + { + Id = 5020, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка БИ" + }, + new + { + Id = 5021, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка ОК" + }, + new + { + Id = 5022, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при спуске ОК" + }, + new + { + Id = 5023, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при цементировании" + }, + new + { + Id = 5024, + IdParent = 4009, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разборка комплекса приборов ГИС" + }, + new + { + Id = 5025, + IdParent = 4009, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка комплекса приборов ГИС" + }, + new + { + Id = 5026, + IdParent = 4010, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем приборов ГИС (на трубах)" + }, + new + { + Id = 5027, + IdParent = 4010, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск приборов ГИС (на трубах)" + }, + new + { + Id = 5028, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на жестком кабеле" + }, + new + { + Id = 5029, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на кабеле" + }, + new + { + Id = 5030, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Комплекс ГИС на трубах" + }, + new + { + Id = 5031, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Закачка/прокачка пачки" + }, + new + { + Id = 5032, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обработка БР" + }, + new + { + Id = 5033, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование ТС при бурении" + }, + new + { + Id = 5034, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перезапись гаммы-каротажа" + }, + new + { + Id = 5035, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Приготовление БР" + }, + new + { + Id = 5036, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка" + }, + new + { + Id = 5037, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Разбуривание тех.оснастки" + }, + new + { + Id = 5038, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск инструмента с проработкой" + }, + new + { + Id = 5039, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ВМР" + }, + new + { + Id = 5040, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Демонтаж ПВО" + }, + new + { + Id = 5041, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Долив затруба при подъёме" + }, + new + { + Id = 5042, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Монтаж ПВО" + }, + new + { + Id = 5043, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Наработка жёлоба" + }, + new + { + Id = 5044, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обвязка устья с циркуляционной системой" + }, + new + { + Id = 5045, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Оборудование устья" + }, + new + { + Id = 5046, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Опрессовка ПВО" + }, + new + { + Id = 5047, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перемонтаж ПВО " + }, + new + { + Id = 5048, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Перетяжка талевого каната" + }, + new + { + Id = 5049, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР при сборке КНБК" + }, + new + { + Id = 5050, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Полная замена талевого каната" + }, + new + { + Id = 5051, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПР перед забуркой направления" + }, + new + { + Id = 5052, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Продувка манифольда" + }, + new + { + Id = 5053, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Срезка" + }, + new + { + Id = 5054, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Тайм-дриллинг" + }, + new + { + Id = 5055, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Тех.отстой" + }, + new + { + Id = 5056, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Учебная тревога \"Выброс\"" + }, + new + { + Id = 5057, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Чистка ЦСГО/емкостного блока" + }, + new + { + Id = 5058, + IdParent = 4014, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт бурового оборудования" + }, + new + { + Id = 5059, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ловильные работы" + }, + new + { + Id = 5060, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ожидание" + }, + new + { + Id = 5061, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Определение места прихвата и ЛМ" + }, + new + { + Id = 5062, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Работа яссом" + }, + new + { + Id = 5063, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Расхаживание" + }, + new + { + Id = 5064, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - колокол" + }, + new + { + Id = 5065, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - метчик" + }, + new + { + Id = 5066, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - овершот" + }, + new + { + Id = 5067, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "СПО - труболовка" + }, + new + { + Id = 5068, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Торпедирование (встряхивание)" + }, + new + { + Id = 5069, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Торпедирование (отстрел)" + }, + new + { + Id = 5070, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Установка ванн" + }, + new + { + Id = 5071, + IdParent = 4015, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Фрезеровка" + }, + new + { + Id = 5072, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Контролируемое ГНВП" + }, + new + { + Id = 5073, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Поглощение" + }, + new + { + Id = 5074, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сальникообразование" + }, + new + { + Id = 5075, + IdParent = 4016, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Утяжеление БР" + }, + new + { + Id = 5076, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "НПВ / прочее" + }, + new + { + Id = 5077, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Обработка раствора (несоответствие параметров)" + }, + new + { + Id = 5078, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "подъем ОК" + }, + new + { + Id = 5079, + IdParent = 4017, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ревизия КНБК/инструмента/ЗТС" + }, + new + { + Id = 5082, + IdParent = 4000, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка устройства ориентирования КО" + }, + new + { + Id = 5083, + IdParent = 4003, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Проработка принудительная" + }, + new + { + Id = 5084, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонировка подъем БИ, продувка" + }, + new + { + Id = 5085, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск бурильного инструмента со сборкой с мостков" + }, + new + { + Id = 5086, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем БИ с выбросом на мостки" + }, + new + { + Id = 5087, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск БИ со сборкой с мостков" + }, + new + { + Id = 5088, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка и спуск ТБТ" + }, + new + { + Id = 5089, + IdParent = 4005, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск КО на транспортной колонне" + }, + new + { + Id = 5090, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Отворот допускной трубы" + }, + new + { + Id = 5091, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Активация подвески, опрессовка" + }, + new + { + Id = 5092, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Монтаж, опрессовка ФА" + }, + new + { + Id = 5093, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка хвостовика 114мм (согласно схеме)" + }, + new + { + Id = 5094, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ПЗР к спуску УЭЦН" + }, + new + { + Id = 5095, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Активация подвески (потайной колонны, хвостовика)" + }, + new + { + Id = 5096, + IdParent = 4008, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонирование перед спуском" + }, + new + { + Id = 5097, + IdParent = 4012, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Промывка - перевод скважины на новый раствор" + }, + new + { + Id = 5098, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка БИ с мостков на подсвечник" + }, + new + { + Id = 5099, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подготовка ствола скважины. Перезапись ГК в интервале установки КО." + }, + new + { + Id = 5100, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Смена рабочего переводника ВСП" + }, + new + { + Id = 5101, + IdParent = 4014, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ремонт" + }, + new + { + Id = 5102, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск пакера" + }, + new + { + Id = 5103, + IdParent = 4011, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Запись гамма-каратожа" + }, + new + { + Id = 5104, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Шаблонирование спуск БИ" + }, + new + { + Id = 5105, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Сборка клин-отклонителя" + }, + new + { + Id = 5106, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование и посадка клина-отклонителя" + }, + new + { + Id = 5107, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Протяжка подъемного патрубка подвески" + }, + new + { + Id = 5108, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Подъем клина-отклонителя" + }, + new + { + Id = 5109, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Стыковка стингера с хвостовиком основного ствола" + }, + new + { + Id = 5110, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Ориентирование и установка стыковочного узла хвостовика" + }, + new + { + Id = 5111, + IdParent = 4001, + IsHidden = false, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение с отбором керна" + }, + new + { + Id = 5112, + IdParent = 4018, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Работа пакером в обсадной колонне" + }, + new + { + Id = 5113, + IdParent = 4001, + IsHidden = false, + KeyValueName = "МСП", + KeyValueUnits = "м/ч", + Name = "Бурение" + }, + new + { + Id = 5114, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "ТО оборудования" + }, + new + { + Id = 5115, + IdParent = 4019, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Спуск НКТ" + }, + new + { + Id = 5116, + IdParent = 4013, + IsHidden = false, + KeyValueName = "dT", + KeyValueUnits = "мин", + Name = "Вырезка окна" + }, + new + { + Id = 5117, + IdParent = 4013, + IsHidden = false, + 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.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", 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.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", "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.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", 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.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", "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.ProcessMapPlan.Functions.ProcessMapPlanDamper", 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.ProcessMapPlan.Functions.ProcessMapPlanDamper", "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.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", 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.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", "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.ProcessMapPlan.Functions.ProcessMapPlanOscillation", 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.ProcessMapPlan.Functions.ProcessMapPlanOscillation", "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.ProcessMapPlan.Functions.ProcessMapPlanShockTest", 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.ProcessMapPlan.Functions.ProcessMapPlanShockTest", "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.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", 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.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", "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.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", 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.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", "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.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", 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.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", "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.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", 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.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", "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.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", 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.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", "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.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", 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.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", "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.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", 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.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", "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.ProcessMapPlan.Operations.ProcessMapPlanRotor", 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.ProcessMapPlan.Operations.ProcessMapPlanRotor", "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.ProcessMapPlan.Operations.ProcessMapPlanSlide", 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.ProcessMapPlan.Operations.ProcessMapPlanSlide", "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.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", 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) + .HasConstraintName("FK_t_process_map_plan_operation_switching_off_the_pump_t_user~1"); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", "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() + .HasConstraintName("FK_t_process_map_plan_operation_switching_off_the_pump_t_well~1"); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", 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.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", "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.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", 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.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", "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.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/20240701104026_Remove_some_processMapsPlan.cs b/AsbCloudDb/Migrations/20240701104026_Remove_some_processMapsPlan.cs new file mode 100644 index 00000000..a80b396b --- /dev/null +++ b/AsbCloudDb/Migrations/20240701104026_Remove_some_processMapsPlan.cs @@ -0,0 +1,438 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace AsbCloudDb.Migrations +{ + /// + public partial class Remove_some_processMapsPlan : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "t_process_map_plan_ream"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_rotor_lowering_bit"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_rotor_rpm_acceleration"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_slide_lowering_bit"); + + migrationBuilder.DropTable( + name: "t_process_map_plan_updating_noload_parameters"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "t_process_map_plan_ream", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + pressure = table.Column(type: "double precision", nullable: false, comment: "Давление, атм"), + repeats = table.Column(type: "double precision", nullable: false, comment: "Количество повторений"), + setpoint_drag = table.Column(type: "double precision", nullable: false, comment: "Уставка зятяжки, т"), + setpoint_tight = table.Column(type: "double precision", nullable: false, comment: "Уставка посадки, т"), + speed_downward = table.Column(type: "double precision", nullable: false, comment: "Скорость спуска, м/ч"), + speed_upward = table.Column(type: "double precision", nullable: false, comment: "Скорость подъёма, м/ч"), + spin_downward = table.Column(type: "double precision", nullable: false, comment: "Вращение при движении вниз, об/мин"), + spin_upward = table.Column(type: "double precision", nullable: false, comment: "Вращение при движении вверх, об/мин"), + torque = table.Column(type: "double precision", nullable: false, comment: "Момент, кН*м") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_ream", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_ream_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_ream_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_ream_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_ream_t_well_section_type_id_wellsection_~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "РТК проработка скважины"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_rotor_lowering_bit", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + differential_pressure = table.Column(type: "double precision", nullable: false, comment: "Перепад давления уставка, атм."), + flow_rate_down = table.Column(type: "double precision", nullable: false, comment: "Расход вниз, л/с."), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + pressure_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимое давление, атм."), + rop_down = table.Column(type: "double precision", nullable: false, comment: "Скорость вниз, м/ч."), + rpm_down = table.Column(type: "double precision", nullable: false, comment: "Обороты вниз, об/мин."), + slacking_off = table.Column(type: "double precision", nullable: false, comment: "Посадка, т."), + torque_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимый момент, кН*м.") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_rotor_lowering_bit", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_lowering_bit_t_process_map_plan_ro~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_rotor_lowering_bit", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_lowering_bit_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_lowering_bit_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_lowering_bit_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_lowering_bit_t_well_section_type_i~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "РТК подход к забою в роторе"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_rotor_rpm_acceleration", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + rpm = table.Column(type: "double precision", nullable: false, comment: "Обороты на ВСП уставка, об/мин."), + rpm_max = table.Column(type: "double precision", nullable: false, comment: "Обороты на ВСП ограничение, об/мин."), + top_drive_torque = table.Column(type: "double precision", nullable: false, comment: "Момент на ВСП уставка, кН*м."), + top_drive_torque_max = table.Column(type: "double precision", nullable: false, comment: "Момент на ВСП ограничение, кН*м.") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_rotor_rpm_acceleration", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_rpm_acceleration_t_process_map_pla~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_rotor_rpm_acceleration", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_rpm_acceleration_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_rpm_acceleration_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_rpm_acceleration_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_rotor_rpm_acceleration_t_well_section_ty~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Выход на обороты перед ротором"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_slide_lowering_bit", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + differential_pressure = table.Column(type: "double precision", nullable: false, comment: "Перепад давления уставка, атм."), + flow_rate_down = table.Column(type: "double precision", nullable: false, comment: "Расход вниз, л/с."), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания"), + pressure_max = table.Column(type: "double precision", nullable: false, comment: "Максимально допустимое давление, атм."), + rop_down = table.Column(type: "double precision", nullable: false, comment: "Скорость вниз, м/ч.") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_slide_lowering_bit", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_lowering_bit_t_process_map_plan_sl~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_slide_lowering_bit", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_lowering_bit_t_user_id_author", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_lowering_bit_t_user_id_editor", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_lowering_bit_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_slide_lowering_bit_t_well_section_type_i~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "РТК подход к забою в слайде"); + + migrationBuilder.CreateTable( + name: "t_process_map_plan_updating_noload_parameters", + columns: table => new + { + id = table.Column(type: "integer", nullable: false, comment: "Идентификатор") + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + id_author = table.Column(type: "integer", nullable: false, comment: "Автор"), + id_editor = table.Column(type: "integer", nullable: true, comment: "Редактор"), + id_previous = table.Column(type: "integer", nullable: true, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + id_well = table.Column(type: "integer", nullable: false, comment: "Id скважины"), + id_wellsection_type = table.Column(type: "integer", nullable: false, comment: "Тип секции"), + creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "дата создания"), + depth_end = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу до, м"), + depth_start = table.Column(type: "double precision", nullable: false, comment: "Глубина по стволу от, м"), + id_decline_socket_column = table.Column(type: "boolean", nullable: false, comment: "СПУСК ОК Да/Нет"), + id_state = table.Column(type: "integer", nullable: false, comment: "ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная"), + note = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "Примечание"), + obsolete = table.Column(type: "timestamp with time zone", nullable: true, comment: "дата устаревания") + }, + constraints: table => + { + table.PrimaryKey("PK_t_process_map_plan_updating_noload_parameters", x => x.id); + table.ForeignKey( + name: "FK_t_process_map_plan_updating_noload_parameters_t_process_map~", + column: x => x.id_previous, + principalTable: "t_process_map_plan_updating_noload_parameters", + principalColumn: "id"); + table.ForeignKey( + name: "FK_t_process_map_plan_updating_noload_parameters_t_user_id_aut~", + column: x => x.id_author, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_updating_noload_parameters_t_user_id_edi~", + column: x => x.id_editor, + principalTable: "t_user", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_t_process_map_plan_updating_noload_parameters_t_well_id_well", + column: x => x.id_well, + principalTable: "t_well", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_t_process_map_plan_updating_noload_parameters_t_well_sectio~", + column: x => x.id_wellsection_type, + principalTable: "t_well_section_type", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }, + comment: "Обновление холостого хода"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_ream_id_author", + table: "t_process_map_plan_ream", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_ream_id_editor", + table: "t_process_map_plan_ream", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_ream_id_well", + table: "t_process_map_plan_ream", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_ream_id_wellsection_type", + table: "t_process_map_plan_ream", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_lowering_bit_id_author", + table: "t_process_map_plan_rotor_lowering_bit", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_lowering_bit_id_editor", + table: "t_process_map_plan_rotor_lowering_bit", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_lowering_bit_id_previous", + table: "t_process_map_plan_rotor_lowering_bit", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_lowering_bit_id_well", + table: "t_process_map_plan_rotor_lowering_bit", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_lowering_bit_id_wellsection_type", + table: "t_process_map_plan_rotor_lowering_bit", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_rpm_acceleration_id_author", + table: "t_process_map_plan_rotor_rpm_acceleration", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_rpm_acceleration_id_editor", + table: "t_process_map_plan_rotor_rpm_acceleration", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_rpm_acceleration_id_previous", + table: "t_process_map_plan_rotor_rpm_acceleration", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_rpm_acceleration_id_well", + table: "t_process_map_plan_rotor_rpm_acceleration", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_rotor_rpm_acceleration_id_wellsection_ty~", + table: "t_process_map_plan_rotor_rpm_acceleration", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_lowering_bit_id_author", + table: "t_process_map_plan_slide_lowering_bit", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_lowering_bit_id_editor", + table: "t_process_map_plan_slide_lowering_bit", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_lowering_bit_id_previous", + table: "t_process_map_plan_slide_lowering_bit", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_lowering_bit_id_well", + table: "t_process_map_plan_slide_lowering_bit", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_slide_lowering_bit_id_wellsection_type", + table: "t_process_map_plan_slide_lowering_bit", + column: "id_wellsection_type"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_updating_noload_parameters_id_author", + table: "t_process_map_plan_updating_noload_parameters", + column: "id_author"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_updating_noload_parameters_id_editor", + table: "t_process_map_plan_updating_noload_parameters", + column: "id_editor"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_updating_noload_parameters_id_previous", + table: "t_process_map_plan_updating_noload_parameters", + column: "id_previous"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_updating_noload_parameters_id_well", + table: "t_process_map_plan_updating_noload_parameters", + column: "id_well"); + + migrationBuilder.CreateIndex( + name: "IX_t_process_map_plan_updating_noload_parameters_id_wellsectio~", + table: "t_process_map_plan_updating_noload_parameters", + column: "id_wellsection_type"); + } + } +} diff --git a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs index e8a2c4fb..44edc939 100644 --- a/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs +++ b/AsbCloudDb/Migrations/AsbCloudDbContextModelSnapshot.cs @@ -2629,7 +2629,7 @@ namespace AsbCloudDb.Migrations }); }); - modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanReam", b => + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -2684,55 +2684,32 @@ namespace AsbCloudDb.Migrations .HasColumnName("id_wellsection_type") .HasComment("Тип секции"); + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + b.Property("Obsolete") .HasColumnType("timestamp with time zone") .HasColumnName("obsolete") .HasComment("дата устаревания"); - b.Property("Pressure") + b.Property("TopDriveRpmMin") .HasColumnType("double precision") - .HasColumnName("pressure") - .HasComment("Давление, атм"); + .HasColumnName("top_drive_rpm_min") + .HasComment("Минимальные обороты ВСП, об/мин"); - b.Property("Repeats") + b.Property("TopDriveStartMinFlowRate") .HasColumnType("double precision") - .HasColumnName("repeats") - .HasComment("Количество повторений"); + .HasColumnName("top_drive_start_min_flow_rate") + .HasComment("Минимальный расход для запуска оборотов ВСП, л/сек"); - b.Property("SetpointDrag") + b.Property("TopDriveTorqueMax") .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("Момент, кН*м"); + .HasColumnName("top_drive_torque_max") + .HasComment("Максимально допустимый момент на ВСП при противоаварийном вращении, кН*м"); b.HasKey("Id"); @@ -2740,17 +2717,1559 @@ namespace AsbCloudDb.Migrations b.HasIndex("IdEditor"); + b.HasIndex("IdPrevious"); + b.HasIndex("IdWell"); b.HasIndex("IdWellSectionType"); - b.ToTable("t_process_map_plan_ream", t => + b.ToTable("t_process_map_plan_anti_crash_rotation", t => { - t.HasComment("РТК проработка скважины"); + t.HasComment("Противоаварийное вращение"); }); }); - modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanRotor", b => + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", 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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("ZenithAngle") + .HasColumnType("double precision") + .HasColumnName("zenit_angle") + .HasComment("Зенитный угол, градусы"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_auto_hold_tf", t => + { + t.HasComment("Автоудержание TF"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDamper", 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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("StickSlip") + .HasColumnType("double precision") + .HasColumnName("stick_slip") + .HasComment("StickSlip"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_functions_damper", t => + { + t.HasComment("Демпфер"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", 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("LengthStep") + .HasColumnType("double precision") + .HasColumnName("length_step") + .HasComment("Величина проходки шага, м."); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("RpmMin") + .HasColumnType("double precision") + .HasColumnName("rpm_min") + .HasComment("Минимальные обороты на ВСП, об/мин."); + + b.Property("RpmStepsCount") + .HasColumnType("integer") + .HasColumnName("rpm_steps_count") + .HasComment("Количество шагов оборотов на ВСП, об/мин."); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.Property("WeightOnBitStepsCount") + .HasColumnType("integer") + .HasColumnName("weight_on_bit_steps_count") + .HasComment("Количество шагов по нагрузке"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_drilltest", t => + { + t.HasComment("DrillTest"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanOscillation", 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("Mode") + .HasColumnType("integer") + .HasColumnName("mode") + .HasComment("Режим Авто/Руч"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("OptimalOscillationAngle") + .HasColumnType("double precision") + .HasColumnName("optimal_oscillation_angle") + .HasComment("Оптимальный угол осцилляции, градусы"); + + b.Property("RpmLeft") + .HasColumnType("double precision") + .HasColumnName("Rpm_left") + .HasComment("Скорость влево, об/мин"); + + b.Property("RpmRight") + .HasColumnType("double precision") + .HasColumnName("Rpm​_right") + .HasComment("Скорость вправо, об/мин"); + + b.Property("TorqueMaxLeft") + .HasColumnType("double precision") + .HasColumnName("torque_max_left") + .HasComment("Ограничение момента влево, кН*м"); + + b.Property("TorqueMaxRight") + .HasColumnType("double precision") + .HasColumnName("torque_max_right") + .HasComment("Ограничение момента вправо, кН*м"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_oscillation", t => + { + t.HasComment("Осцилляция"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanShockTest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id") + .HasComment("Идентификатор"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AxialVibrations") + .HasColumnType("double precision") + .HasColumnName("axial_vibrations") + .HasComment("Осевые вибрации"); + + b.Property("CombinedVibrations") + .HasColumnType("double precision") + .HasColumnName("combined_vibrations") + .HasComment("Комбинированные вибрации"); + + 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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("RpmMin") + .HasColumnType("double precision") + .HasColumnName("rpm_min") + .HasComment("Минимальные обороты на ВСП, об/мин."); + + b.Property("StickSlip") + .HasColumnType("double precision") + .HasColumnName("stick_slip") + .HasComment("stickSlip"); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.Property("Whirl") + .HasColumnType("double precision") + .HasColumnName("whirl") + .HasComment("Whirl"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_shock_test", t => + { + t.HasComment("ShockTest"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", 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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("SignalWaitingTime") + .HasColumnType("double precision") + .HasColumnName("signal_waiting_time") + .HasComment("Время ожидания выхода сигнала с ТМС, сек."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_static_measurement_output", t => + { + t.HasComment("Выход статического замера"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", 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("DifferentialPressureMin") + .HasColumnType("double precision") + .HasColumnName("differential_pressure_min") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("TimeLoadCapacityMin") + .HasColumnType("double precision") + .HasColumnName("time_load_capacity_min") + .HasComment("Время выработки минимальное, сек"); + + b.Property("WeightOnBitMin") + .HasColumnType("double precision") + .HasColumnName("weight_on_bit_min") + .HasComment("Нагрузка минимальная, т"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_load_capacity", t => + { + t.HasComment("РТК выработка нагрузки"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", 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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") + .HasComment("Обороты на ВСП, об/мин., Уставка"); + + b.Property("RpmMax") + .HasColumnType("double precision") + .HasColumnName("rpm_max") + .HasComment("Обороты на ВСП, об/мин., Ограничение"); + + b.Property("TopDriveTorque") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque") + .HasComment("Момент на ВСП, кН*м., Уставка"); + + b.Property("TopDriveTorqueMax") + .HasColumnType("double precision") + .HasColumnName("top_drive_torque_max") + .HasComment("Момент на ВСП, кН*м., Ограничение"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_oscillation_angels", t => + { + t.HasComment("Определение углов осцилляции"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления уставка, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("flow_rate_up") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RopUp") + .HasColumnType("double precision") + .HasColumnName("rop_up") + .HasComment("Скорость вверх, м/ч."); + + b.Property("RpmDown") + .HasColumnType("double precision") + .HasColumnName("rpm_down") + .HasComment("Обороты вниз, об/мин."); + + b.Property("RpmUp") + .HasColumnType("double precision") + .HasColumnName("rpm_up") + .HasComment("Обороты вверх, об/мин."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("StopOffTheBottom") + .HasColumnType("double precision") + .HasColumnName("stop_off_the_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_positioning_off_the_bottom", t => + { + t.HasComment("Позиционирование над забоем"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("Reaming1FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_down") + .HasComment("Проработка 1, Расход, л/с., Вниз"); + + b.Property("Reaming1FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_up") + .HasComment("Проработка 1, Расход, л/с., Вверх"); + + b.Property("Reaming1Interval") + .HasColumnType("double precision") + .HasColumnName("reaming1_interval") + .HasComment("Проработка 1, Интервал проработки, м."); + + b.Property("Reaming1RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming1_repetitions_count") + .HasComment("Проработка 1. Количество повторений, шт."); + + b.Property("Reaming1RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_down") + .HasComment("Проработка 1, Скорость, м/ч., Вниз"); + + b.Property("Reaming1RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_up") + .HasComment("Проработка 1. Скорость вверх, м/ч."); + + b.Property("Reaming1RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_down") + .HasComment("Проработка 1, Обороты, об/мин., Вниз"); + + b.Property("Reaming1RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_up") + .HasComment("Проработка 1, Обороты, об/мин., Вверх"); + + b.Property("Reaming1StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming1_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming2FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_down") + .HasComment("Проработка 2, Расход, л/с., Вниз"); + + b.Property("Reaming2FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_up") + .HasComment("Проработка 2, Расход, л/с., Вверх"); + + b.Property("Reaming2Interval") + .HasColumnType("double precision") + .HasColumnName("reaming2_interval") + .HasComment("Проработка 2, Интервал проработки, м."); + + b.Property("Reaming2RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming2_repetitions_count") + .HasComment("Проработка 2, Количество повторений, шт."); + + b.Property("Reaming2RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_down") + .HasComment("Проработка 2, Скорость, м/ч., Вниз"); + + b.Property("Reaming2RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_up") + .HasComment("Проработка 2, Скорость, м/ч., Вверх"); + + b.Property("Reaming2RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_down") + .HasComment("Проработка 2, Обороты, об/мин., Вниз"); + + b.Property("Reaming2RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_up") + .HasComment("Проработка 2, Обороты, об/мин., Вверх"); + + b.Property("Reaming2StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming2_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming3FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_down") + .HasComment("Проработка 3, Расход, л/с., Вниз"); + + b.Property("Reaming3FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_up") + .HasComment("Проработка 3, Расход, л/с., Вверх"); + + b.Property("Reaming3Interval") + .HasColumnType("double precision") + .HasColumnName("reaming3_interval") + .HasComment("Проработка 3, Интервал проработки, м."); + + b.Property("Reaming3RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("reaming3_repetitions_count") + .HasComment("Проработка 3, Количество повторений, шт."); + + b.Property("Reaming3RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_down") + .HasComment("Проработка 3, Скорость, м/ч., Вниз"); + + b.Property("Reaming3RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_up") + .HasComment("Проработка 3, Скорость, м/ч., Вверх"); + + b.Property("Reaming3RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_down") + .HasComment("Проработка 3, Обороты, об/мин., Вниз"); + + b.Property("Reaming3RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_up") + .HasComment("Проработка 3, Обороты, об/мин., Вверх"); + + b.Property("Reaming3StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming3_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_reaming_rotor", t => + { + t.HasComment("РТК проработка ротор"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("Reaming1FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_down") + .HasComment("Проработка 1, Расход, л/с., Вниз"); + + b.Property("Reaming1FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_flow_rate_up") + .HasComment("Проработка 1, Расход, л/с., Вверх"); + + b.Property("Reaming1Interval") + .HasColumnType("double precision") + .HasColumnName("reaming1_interval") + .HasComment("Проработка 1, Интервал проработки, м."); + + b.Property("Reaming1RepetitionsCount") + .HasColumnType("double precision") + .HasColumnName("reaming1_repetitions_count") + .HasComment("Проработка 1. Количество повторений, шт."); + + b.Property("Reaming1RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_down") + .HasComment("Проработка 1. Скорость вниз, м/ч."); + + b.Property("Reaming1RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rop_up") + .HasComment("Проработка 1. Скорость вверх, м/ч."); + + b.Property("Reaming1RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_down") + .HasComment("Проработка 1, Обороты, об/мин., Вниз"); + + b.Property("Reaming1RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming1_rpm_up") + .HasComment("Проработка 1, Обороты, об/мин., Вверх"); + + b.Property("Reaming1StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming1_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming2FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_down") + .HasComment("Проработка 2, Расход, л/с., Вниз"); + + b.Property("Reaming2FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_flow_rate_up") + .HasComment("Проработка 2, Расход, л/с., Вверх"); + + b.Property("Reaming2Interval") + .HasColumnType("double precision") + .HasColumnName("reaming2_interval") + .HasComment("Проработка 2, Интервал проработки, м."); + + b.Property("Reaming2RepetitionsCount") + .HasColumnType("double precision") + .HasColumnName("reaming2_repetitions_count") + .HasComment("Проработка 2, Количество повторений, шт."); + + b.Property("Reaming2RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_down") + .HasComment("Проработка 2, Скорость, м/ч., Вниз"); + + b.Property("Reaming2RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rop_up") + .HasComment("Проработка 2, Скорость, м/ч., Вверх"); + + b.Property("Reaming2RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_down") + .HasComment("Проработка 2, Обороты, об/мин., Вниз"); + + b.Property("Reaming2RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming2_rpm_up") + .HasComment("Проработка 2, Обороты, об/мин., Вверх"); + + b.Property("Reaming2StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming2_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("Reaming3FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_down") + .HasComment("Проработка 3, Расход, л/с., Вниз"); + + b.Property("Reaming3FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_flow_rate_up") + .HasComment("Проработка 3, Расход, л/с., Вверх"); + + b.Property("Reaming3Interval") + .HasColumnType("double precision") + .HasColumnName("reaming3_interval") + .HasComment("Проработка 3, Интервал проработки, м."); + + b.Property("Reaming3RepetitionsCount") + .HasColumnType("double precision") + .HasColumnName("reaming3_repetitions_count") + .HasComment("Проработка 3, Количество повторений, шт."); + + b.Property("Reaming3RopDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_down") + .HasComment("Проработка 3, Скорость, м/ч., Вниз"); + + b.Property("Reaming3RopUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rop_up") + .HasComment("Проработка 3, Скорость, м/ч., Вверх"); + + b.Property("Reaming3RpmDown") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_down") + .HasComment("Проработка 3, Обороты, об/мин., Вниз"); + + b.Property("Reaming3RpmUp") + .HasColumnType("double precision") + .HasColumnName("reaming3_rpm_up") + .HasComment("Проработка 3, Обороты, об/мин., Вверх"); + + b.Property("Reaming3StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("reaming3_stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_reaming_slide", t => + { + t.HasComment("РТК проработка слайд"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", 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("MeasurementRecordingTime") + .HasColumnType("double precision") + .HasColumnName("measurement_recording_time") + .HasComment("Время записи замера, сек"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_recording_static_measurement", t => + { + t.HasComment("Запись статического замера"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanRotor", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -2780,9 +4299,9 @@ namespace AsbCloudDb.Migrations .HasColumnName("differential_pressure") .HasComment("Перепад давления, атм. Уставка"); - b.Property("DifferentialPressureLimitMax") + b.Property("DifferentialPressureMax") .HasColumnType("double precision") - .HasColumnName("differential_pressure_limit_max") + .HasColumnName("differential_pressure_max") .HasComment("Перепад давления, атм. Ограничение"); b.Property("FlowRate") @@ -2790,9 +4309,9 @@ namespace AsbCloudDb.Migrations .HasColumnName("flow_rate") .HasComment("Расход л/с. Уставка"); - b.Property("FlowRateLimitMax") + b.Property("FlowRateMax") .HasColumnType("double precision") - .HasColumnName("flow_rate_limit_max") + .HasColumnName("flow_rate_max") .HasComment("Расход л/с. Ограничение"); b.Property("IdAuthor") @@ -2837,34 +4356,34 @@ namespace AsbCloudDb.Migrations .HasColumnName("obsolete") .HasComment("дата устаревания"); - b.Property("PressureLimitMax") + b.Property("PressureMax") .HasColumnType("double precision") - .HasColumnName("pressure_limit_max") + .HasColumnName("pressure_max") .HasComment("Максимально допустимое давление, атм"); - b.Property("RevolutionsPerMinute") + b.Property("RopMax") .HasColumnType("double precision") - .HasColumnName("revolution_per_minute") + .HasColumnName("rop_max") + .HasComment("Максимально допустимая скорость, м/ч"); + + b.Property("Rpm") + .HasColumnType("double precision") + .HasColumnName("rpm") .HasComment("Обороты на ВСП, об/мин. Уставка"); - b.Property("RevolutionsPerMinuteLimitMax") + b.Property("RpmMax") .HasColumnType("double precision") - .HasColumnName("revolutions_per_minute_limit_max") + .HasColumnName("rpm_max") .HasComment("Обороты на ВСП, об/мин. Ограничение"); - b.Property("RopLimitMax") - .HasColumnType("double precision") - .HasColumnName("rop_limit_max") - .HasComment("Максимально допустимая скорость, м/ч"); - b.Property("TopDriveTorque") .HasColumnType("double precision") .HasColumnName("top_drive_torque") .HasComment("Момент на ВСП, кН*м. Уставка"); - b.Property("TopDriveTorqueLimit") + b.Property("TopDriveTorqueMax") .HasColumnType("double precision") - .HasColumnName("top_drive_torque_limit_max") + .HasColumnName("top_drive_torque_max") .HasComment("Момент на ВСП, кН*м. Ограничение"); b.Property("WeightOnBit") @@ -2872,9 +4391,9 @@ namespace AsbCloudDb.Migrations .HasColumnName("weight_on_bit") .HasComment("Нагрузка, т. Уставка"); - b.Property("WeightOnBitLimitMax") + b.Property("WeightOnBitMax") .HasColumnType("double precision") - .HasColumnName("weight_on_bit_limit_max") + .HasColumnName("weight_on_bit_max") .HasComment("Нагрузка, т. Ограничение"); b.HasKey("Id"); @@ -2895,7 +4414,7 @@ namespace AsbCloudDb.Migrations }); }); - modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanSlide", b => + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSlide", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -2905,6 +4424,11 @@ namespace AsbCloudDb.Migrations NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + b.Property("Buckling") + .HasColumnType("double precision") + .HasColumnName("buckling") + .HasComment("Складывание инструмента, м."); + b.Property("Creation") .HasColumnType("timestamp with time zone") .HasColumnName("creation") @@ -2923,22 +4447,22 @@ namespace AsbCloudDb.Migrations b.Property("DifferentialPressure") .HasColumnType("double precision") .HasColumnName("differential_pressure") - .HasComment("Перепад давления, атм. Уставка"); + .HasComment("Перепад давления уставка, атм."); - b.Property("DifferentialPressureLimitMax") + b.Property("DifferentialPressureMax") .HasColumnType("double precision") - .HasColumnName("differential_pressure_limit_max") - .HasComment("Перепад давления, атм. Ограничение"); + .HasColumnName("differential_pressure_max") + .HasComment("Перепад давления ограничение, атм."); b.Property("FlowRate") .HasColumnType("double precision") .HasColumnName("flow_rate") - .HasComment("Расход л/с. Уставка"); + .HasComment("Расход уставка, л/с."); - b.Property("FlowRateLimitMax") + b.Property("FlowRateMax") .HasColumnType("double precision") - .HasColumnName("flow_rate_limit_max") - .HasComment("Расход л/с. Ограничение"); + .HasColumnName("flow_rate_max") + .HasComment("Расход ограничение, л/с."); b.Property("IdAuthor") .HasColumnType("integer") @@ -2982,35 +4506,30 @@ namespace AsbCloudDb.Migrations .HasColumnName("obsolete") .HasComment("дата устаревания"); - b.Property("PressureLimitMax") + b.Property("PressureMax") .HasColumnType("double precision") - .HasColumnName("pressure_limit_max") - .HasComment("Максимально допустимое давление, атм"); + .HasColumnName("pressure_max") + .HasComment("Максимально допустимое давление, атм."); - b.Property("RopLimitMax") + b.Property("RopMax") .HasColumnType("double precision") - .HasColumnName("rop_limit_max") - .HasComment("Максимально допустимая скорость, м/ч"); + .HasColumnName("rop_max") + .HasComment("Максимально допустимая скорость, м/ч."); b.Property("Spring") .HasColumnType("double precision") .HasColumnName("spring") .HasComment("Расчётная пружина, градус"); - b.Property("ToolBuckling") - .HasColumnType("double precision") - .HasColumnName("tool_buckling") - .HasComment("Складывание инструмента, м"); - b.Property("WeightOnBit") .HasColumnType("double precision") .HasColumnName("weight_on_bit") - .HasComment("Нагрузка, т. Уставка"); + .HasComment("Нагрузка уставка, т."); - b.Property("WeightOnBitLimitMax") + b.Property("WeightOnBitMax") .HasColumnType("double precision") - .HasColumnName("weight_on_bit_limit_max") - .HasComment("Нагрузка, т. Ограничение"); + .HasColumnName("weight_on_bit_max") + .HasComment("Нагрузка ограничение, т."); b.HasKey("Id"); @@ -3030,6 +4549,356 @@ namespace AsbCloudDb.Migrations }); }); + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", 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("Duration") + .HasColumnType("double precision") + .HasColumnName("duration") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("ResidualPressureLimit") + .HasColumnType("double precision") + .HasColumnName("residual_pressure_limit") + .HasComment("Лимит остаточного давления, атм."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_operation_switching_off_the_pump", t => + { + t.HasComment("Выключение насоса"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", 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("FlowRate") + .HasColumnType("double precision") + .HasColumnName("flow_rate") + .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("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_limit") + .HasComment("Максимально допустимое давление, атм."); + + b.Property("RampTime") + .HasColumnType("double precision") + .HasColumnName("ramp_time") + .HasComment("Время выхода буровых насосов на плановый расход, сек."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_switching_to_the_mode", t => + { + t.HasComment("Выход на плановый расход"); + }); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", 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("DifferentialPressure") + .HasColumnType("double precision") + .HasColumnName("differential_pressure") + .HasComment("Перепад давления, атм."); + + b.Property("FlowRateDown") + .HasColumnType("double precision") + .HasColumnName("flow_rate_down") + .HasComment("Расход вниз, л/с."); + + b.Property("FlowRateUp") + .HasColumnType("double precision") + .HasColumnName("flow_rate_up") + .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("Interval") + .HasColumnType("double precision") + .HasColumnName("interval") + .HasComment("Интервал расхаживания, м."); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .HasColumnName("note") + .HasComment("Примечание"); + + b.Property("Obsolete") + .HasColumnType("timestamp with time zone") + .HasColumnName("obsolete") + .HasComment("дата устаревания"); + + b.Property("PressureMax") + .HasColumnType("double precision") + .HasColumnName("pressure_max") + .HasComment("Максимальное давление, атм."); + + b.Property("RepetitionsCount") + .HasColumnType("integer") + .HasColumnName("repetitions_count") + .HasComment("Количество расхаживаний, шт."); + + b.Property("RopDown") + .HasColumnType("double precision") + .HasColumnName("rop_down") + .HasComment("Скорость вниз, м/ч."); + + b.Property("RopUp") + .HasColumnType("double precision") + .HasColumnName("rop_up") + .HasComment("Скорость вверх, м/ч."); + + b.Property("SlackingOff") + .HasColumnType("double precision") + .HasColumnName("slacking_off") + .HasComment("Посадка, т."); + + b.Property("Spring") + .HasColumnType("double precision") + .HasColumnName("spring") + .HasComment("Пружина, град."); + + b.Property("StopPointOffBottom") + .HasColumnType("double precision") + .HasColumnName("stop_point_off_bottom") + .HasComment("Остановка над забоем, м."); + + b.Property("TFSetpoint") + .HasColumnType("double precision") + .HasColumnName("tf_setpoint") + .HasComment("Задание TF, град."); + + b.Property("Tight") + .HasColumnType("double precision") + .HasColumnName("tight") + .HasComment("Затяжка, т."); + + b.Property("TorqueMax") + .HasColumnType("double precision") + .HasColumnName("torque_max") + .HasComment("Максимально допустимый момент, кН*м."); + + b.HasKey("Id"); + + b.HasIndex("IdAuthor"); + + b.HasIndex("IdEditor"); + + b.HasIndex("IdPrevious"); + + b.HasIndex("IdWell"); + + b.HasIndex("IdWellSectionType"); + + b.ToTable("t_process_map_plan_tf_orientation", t => + { + t.HasComment("Выставление"); + }); + }); + modelBuilder.Entity("AsbCloudDb.Model.RelationCompanyWell", b => { b.Property("IdCompany") @@ -6626,7 +8495,7 @@ namespace AsbCloudDb.Migrations { Id = 5002, IdParent = 4001, - IsHidden = false, + IsHidden = true, KeyValueName = "МСП", KeyValueUnits = "м/ч", Name = "Бурение слайдом" @@ -6635,7 +8504,7 @@ namespace AsbCloudDb.Migrations { Id = 5003, IdParent = 4001, - IsHidden = false, + IsHidden = true, KeyValueName = "МСП", KeyValueUnits = "м/ч", Name = "Бурение ротором" @@ -8989,40 +10858,7 @@ namespace AsbCloudDb.Migrations b.Navigation("Well"); }); - 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.ProcessMaps.ProcessMapPlanRotor", b => + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", b => { b.HasOne("AsbCloudDb.Model.User", "Author") .WithMany() @@ -9035,7 +10871,7 @@ namespace AsbCloudDb.Migrations .HasForeignKey("IdEditor") .OnDelete(DeleteBehavior.Restrict); - b.HasOne("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanRotor", "Previous") + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAntiCrashRotation", "Previous") .WithMany() .HasForeignKey("IdPrevious"); @@ -9062,7 +10898,7 @@ namespace AsbCloudDb.Migrations b.Navigation("WellSectionType"); }); - modelBuilder.Entity("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanSlide", b => + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", b => { b.HasOne("AsbCloudDb.Model.User", "Author") .WithMany() @@ -9075,7 +10911,649 @@ namespace AsbCloudDb.Migrations .HasForeignKey("IdEditor") .OnDelete(DeleteBehavior.Restrict); - b.HasOne("AsbCloudDb.Model.ProcessMaps.ProcessMapPlanSlide", "Previous") + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Functions.ProcessMapPlanAutoHoldTF", "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.ProcessMapPlan.Functions.ProcessMapPlanDamper", 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.ProcessMapPlan.Functions.ProcessMapPlanDamper", "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.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", 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.ProcessMapPlan.Functions.ProcessMapPlanDrillTest", "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.ProcessMapPlan.Functions.ProcessMapPlanOscillation", 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.ProcessMapPlan.Functions.ProcessMapPlanOscillation", "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.ProcessMapPlan.Functions.ProcessMapPlanShockTest", 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.ProcessMapPlan.Functions.ProcessMapPlanShockTest", "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.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", 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.ProcessMapPlan.Functions.ProcessMapPlanStaticMeasurementOutput", "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.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", 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.ProcessMapPlan.Operations.ProcessMapPlanLoadCapacity", "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.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", 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.ProcessMapPlan.Operations.ProcessMapPlanOscillationAngles", "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.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", 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.ProcessMapPlan.Operations.ProcessMapPlanPositioningOffTheBottom", "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.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", 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.ProcessMapPlan.Operations.ProcessMapPlanReamingRotor", "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.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", 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.ProcessMapPlan.Operations.ProcessMapPlanReamingSlide", "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.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", 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.ProcessMapPlan.Operations.ProcessMapPlanRecordingStaticMeasurement", "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.ProcessMapPlan.Operations.ProcessMapPlanRotor", 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.ProcessMapPlan.Operations.ProcessMapPlanRotor", "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.ProcessMapPlan.Operations.ProcessMapPlanSlide", 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.ProcessMapPlan.Operations.ProcessMapPlanSlide", "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.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", 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) + .HasConstraintName("FK_t_process_map_plan_operation_switching_off_the_pump_t_user~1"); + + b.HasOne("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingOffThePump", "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() + .HasConstraintName("FK_t_process_map_plan_operation_switching_off_the_pump_t_well~1"); + + b.Navigation("Author"); + + b.Navigation("Editor"); + + b.Navigation("Previous"); + + b.Navigation("Well"); + + b.Navigation("WellSectionType"); + }); + + modelBuilder.Entity("AsbCloudDb.Model.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", 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.ProcessMapPlan.Operations.ProcessMapPlanSwitchingToTheMode", "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.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", 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.ProcessMapPlan.Operations.ProcessMapPlanTFOrientation", "Previous") .WithMany() .HasForeignKey("IdPrevious"); diff --git a/AsbCloudDb/Model/AsbCloudDbContext.cs b/AsbCloudDb/Model/AsbCloudDbContext.cs index 19f46c52..95b3a292 100644 --- a/AsbCloudDb/Model/AsbCloudDbContext.cs +++ b/AsbCloudDb/Model/AsbCloudDbContext.cs @@ -4,9 +4,10 @@ using System.Threading; using System.Threading.Tasks; using AsbCloudDb.Model.DailyReports; using AsbCloudDb.Model.Manuals; -using AsbCloudDb.Model.ProcessMaps; using AsbCloudDb.Model.WellSections; using AsbCloudDb.Model.Trajectory; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudDb.Model.ProcessMapPlan.Operations; namespace AsbCloudDb.Model { @@ -15,13 +16,28 @@ namespace AsbCloudDb.Model public virtual DbSet Clusters => Set(); public virtual DbSet Companies => Set(); public virtual DbSet CompaniesTypes => Set(); - public virtual DbSet DailyReports => Set (); + public virtual DbSet DailyReports => Set(); public virtual DbSet Deposits => Set(); public virtual DbSet DetectedOperations => Set(); public virtual DbSet TrajectoriesPlan => Set(); public virtual DbSet ProcessMapPlanRotor => Set(); public virtual DbSet ProcessMapPlanSlide => Set(); - public virtual DbSet ProcessMapPlanReams => Set(); + public virtual DbSet ProcessMapPlanReamingRotor => Set(); + public virtual DbSet ProcessMapPlanReamingSlide => Set(); + public virtual DbSet ProcessMapPlanLoadCapacity => Set(); + public virtual DbSet ProcessMapPlanRecordingStaticMeasurement => Set(); + public virtual DbSet ProcessMapPlanPositioningOffTheBottom => Set(); + public virtual DbSet ProcessMapPlanOscillationAngles => Set(); + public virtual DbSet ProcessMapPlanTFOrientation => Set(); + public virtual DbSet ProcessMapPlanSwitchingOffThePump => Set(); + public virtual DbSet ProcessMapPlanSwitchingToTheMode => Set(); + public virtual DbSet ProcessMapPlanDrillTest => Set(); + public virtual DbSet ProcessMapPlanShockTest => Set(); + public virtual DbSet ProcessMapPlanDamper => Set(); + public virtual DbSet ProcessMapPlanAutoHoldTF => Set(); + public virtual DbSet ProcessMapPlanOscillation => Set(); + public virtual DbSet ProcessMapPlanAntiCrashRotation => Set(); + public virtual DbSet ProcessMapPlanStaticMeasurementOutput => Set(); public virtual DbSet DrillingProgramParts => Set(); public virtual DbSet FileCategories => Set(); public virtual DbSet Files => Set(); @@ -62,7 +78,7 @@ namespace AsbCloudDb.Model public virtual DbSet TelemetryWirelineRunOut => Set(); public virtual DbSet TrajectoriesFact => Set(); - + public virtual DbSet WellSectionsPlan => Set(); // GTR WITS @@ -109,7 +125,7 @@ namespace AsbCloudDb.Model } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) - { + { if (!optionsBuilder.IsConfigured) optionsBuilder.UseNpgsql("Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True;Include Error Detail=True;" //, builder=>builder.EnableRetryOnFailure(2, System.TimeSpan.FromMinutes(1)) @@ -136,7 +152,7 @@ namespace AsbCloudDb.Model entity.Property(e => e.Timezone) .HasJsonConversion(); - }); + }); modelBuilder.Entity(entity => { @@ -287,7 +303,7 @@ namespace AsbCloudDb.Model entity.HasIndex(d => d.DepthEnd); entity.HasIndex(d => d.DateStart); - entity.HasOne(o => o.OperationPlan) + entity.HasOne(o => o.OperationPlan) .WithMany() .HasForeignKey(o => o.IdPlan) .OnDelete(DeleteBehavior.SetNull); @@ -342,7 +358,7 @@ namespace AsbCloudDb.Model { entity.HasIndex(e => new { e.IdWell, e.Date }) .IsUnique(); - + entity.Property(e => e.SubsystemBlock) .HasJsonConversion(); @@ -354,7 +370,7 @@ namespace AsbCloudDb.Model }); modelBuilder.Entity(entity => entity - .Property(p=>p.ExtraData) + .Property(p => p.ExtraData) .HasJsonConversion()); modelBuilder.Entity(entity => @@ -371,7 +387,8 @@ namespace AsbCloudDb.Model .HasConstraintName("t_schedule_t_driller_id_driller"); }); - modelBuilder.Entity(entity => { + modelBuilder.Entity(entity => + { entity.Property(e => e.Setpoints) .HasJsonConversion(); }); @@ -383,7 +400,7 @@ namespace AsbCloudDb.Model nameof(WitsItemBase.IdRecord), nameof(WitsItemBase.IdItem), nameof(WitsItemBase.DateTime)); - }); + }); modelBuilder.Entity(entity => { entity.HasKey( @@ -423,7 +440,7 @@ namespace AsbCloudDb.Model .WithMany(mf => mf.Children) .HasForeignKey(mf => mf.IdParent) .OnDelete(DeleteBehavior.Cascade); - + modelBuilder.Entity() .HasOne(m => m.Directory) .WithMany(f => f.Manuals) @@ -453,6 +470,86 @@ namespace AsbCloudDb.Model .WithMany() .OnDelete(DeleteBehavior.Restrict); + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Author) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + modelBuilder.Entity() .HasOne(p => p.Editor) .WithMany() @@ -463,6 +560,86 @@ namespace AsbCloudDb.Model .WithMany() .OnDelete(DeleteBehavior.Restrict); + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(p => p.Editor) + .WithMany() + .OnDelete(DeleteBehavior.Restrict); + DefaultData.DefaultContextData.Fill(modelBuilder); } @@ -478,6 +655,6 @@ namespace AsbCloudDb.Model { var sql = $"REFRESH MATERIALIZED VIEW {materializedViewName};"; return Database.ExecuteSqlRawAsync(sql, token); - } + } } } diff --git a/AsbCloudDb/Model/IAsbCloudDbContext.cs b/AsbCloudDb/Model/IAsbCloudDbContext.cs index f21f8173..f7860f18 100644 --- a/AsbCloudDb/Model/IAsbCloudDbContext.cs +++ b/AsbCloudDb/Model/IAsbCloudDbContext.cs @@ -8,9 +8,10 @@ using System.Threading; using System.Threading.Tasks; using AsbCloudDb.Model.DailyReports; using AsbCloudDb.Model.Manuals; -using AsbCloudDb.Model.ProcessMaps; using AsbCloudDb.Model.WellSections; using AsbCloudDb.Model.Trajectory; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudDb.Model.ProcessMapPlan.Operations; namespace AsbCloudDb.Model { @@ -80,7 +81,24 @@ namespace AsbCloudDb.Model DbSet WellSectionsPlan { get; } DbSet DataSaubStat { get; } DatabaseFacade Database { get; } - DbSet ProcessMapPlanReams { get; } + DbSet ProcessMapPlanRotor { get; } + DbSet ProcessMapPlanSlide { get; } + DbSet ProcessMapPlanReamingRotor { get; } + DbSet ProcessMapPlanReamingSlide { get; } + DbSet ProcessMapPlanLoadCapacity { get; } + DbSet ProcessMapPlanRecordingStaticMeasurement { get; } + DbSet ProcessMapPlanPositioningOffTheBottom { get; } + DbSet ProcessMapPlanOscillationAngles { get; } + DbSet ProcessMapPlanTFOrientation { get; } + DbSet ProcessMapPlanSwitchingOffThePump { get; } + DbSet ProcessMapPlanSwitchingToTheMode { get; } + DbSet ProcessMapPlanDrillTest { get; } + DbSet ProcessMapPlanShockTest { get; } + DbSet ProcessMapPlanDamper { get; } + DbSet ProcessMapPlanAutoHoldTF { get; } + DbSet ProcessMapPlanOscillation { get; } + DbSet ProcessMapPlanAntiCrashRotation { get; } + DbSet ProcessMapPlanStaticMeasurementOutput { get; } Task RefreshMaterializedViewAsync(string mwName, CancellationToken token); Task RefreshMaterializedViewAsync(CancellationToken token) where TEntity : class; diff --git a/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanAntiCrashRotation.cs b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanAntiCrashRotation.cs new file mode 100644 index 00000000..ab4897a2 --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanAntiCrashRotation.cs @@ -0,0 +1,31 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Functions; + +[Table("t_process_map_plan_anti_crash_rotation"), Comment("Противоаварийное вращение")] +public class ProcessMapPlanAntiCrashRotation : ProcessMapPlanBase +{ + [Column("top_drive_rpm_min"), Comment("Минимальные обороты ВСП, об/мин")] + [Range(0.0, 250.0)] + [Required] + public double TopDriveRpmMin { get; set; } + + [Column("top_drive_start_min_flow_rate"), Comment("Минимальный расход для запуска оборотов ВСП, л/сек")] + [Range(0.0, 100.0)] + [Required] + public double TopDriveStartMinFlowRate { get; set; } + + [Column("top_drive_torque_max"), Comment("Максимально допустимый момент на ВСП при противоаварийном вращении, кН*м")] + [Range(1.0, 35.0)] + [Required] + public double TopDriveTorqueMax { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanAntiCrashRotation? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanAutoHoldTF.cs b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanAutoHoldTF.cs new file mode 100644 index 00000000..0f0c5f59 --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanAutoHoldTF.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Functions; + +[Table("t_process_map_plan_auto_hold_tf"), Comment("Автоудержание TF")] +public class ProcessMapPlanAutoHoldTF : ProcessMapPlanBase +{ + [Column("zenit_angle"), Comment("Зенитный угол, градусы")] + [Range(0.0, 100.0)] + [Required] + public double ZenithAngle { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanAutoHoldTF? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanDamper.cs b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanDamper.cs new file mode 100644 index 00000000..3aac9f5b --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanDamper.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Functions; + +[Table("t_process_map_plan_functions_damper"), Comment("Демпфер")] +public class ProcessMapPlanDamper : ProcessMapPlanBase +{ + [Column("stick_slip"), Comment("StickSlip")] + [Range(0.0, 1000.0)] + [Required] + public double StickSlip { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanDamper? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanDrillTest.cs b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanDrillTest.cs new file mode 100644 index 00000000..2cd80bb9 --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanDrillTest.cs @@ -0,0 +1,41 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Functions; + +[Table("t_process_map_plan_drilltest"), Comment("DrillTest")] +public class ProcessMapPlanDrillTest : ProcessMapPlanBase +{ + [Column("weight_on_bit_min"), Comment("Нагрузка минимальная, т")] + [Range(1.0, 30.0)] + [Required] + public double WeightOnBitMin { get; set; } + + [Column("weight_on_bit_steps_count"), Comment("Количество шагов по нагрузке")] + [Range(1, 5)] + [Required] + public int WeightOnBitStepsCount { get; set; } + + [Column("rpm_min"), Comment("Минимальные обороты на ВСП, об/мин.")] + [Range(5, 200)] + [Required] + public double RpmMin { get; set; } + + [Column("rpm_steps_count"), Comment("Количество шагов оборотов на ВСП, об/мин.")] + [Range(1, 5)] + [Required] + public int RpmStepsCount { get; set; } + + [Column("length_step"), Comment("Величина проходки шага, м.")] + [Range(0.1, 2.0)] + [Required] + public double LengthStep { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanDrillTest? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanOscillation.cs b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanOscillation.cs new file mode 100644 index 00000000..81d583a6 --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanOscillation.cs @@ -0,0 +1,46 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Functions; + +[Table("t_process_map_plan_oscillation"), Comment("Осцилляция")] +public class ProcessMapPlanOscillation : ProcessMapPlanBase +{ + [Column("optimal_oscillation_angle"), Comment("Оптимальный угол осцилляции, градусы")] + [Range(0.0, 6000.0)] + [Required] + public double OptimalOscillationAngle { get; set; } + + [Column("Rpm​_right"), Comment("Скорость вправо, об/мин")] + [Range(0.0, 270.0)] + [Required] + public double RpmRight { get; set; } + + [Column("Rpm_left"), Comment("Скорость влево, об/мин")] + [Range(0.0, 270.0)] + [Required] + public double RpmLeft { get; set; } + + [Column("torque_max_right"), Comment("Ограничение момента вправо, кН*м")] + [Range(0.0, 35.0)] + [Required] + public double TorqueMaxRight { get; set; } + + [Column("torque_max_left"), Comment("Ограничение момента влево, кН*м")] + [Range(0.0, 35.0)] + [Required] + public double TorqueMaxLeft { get; set; } + + [Column("mode"), Comment("Режим Авто/Руч")] + [Range(0, 1)] + [Required] + public int Mode { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanOscillation? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanShockTest.cs b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanShockTest.cs new file mode 100644 index 00000000..6c3e96bd --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanShockTest.cs @@ -0,0 +1,46 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Functions; + +[Table("t_process_map_shock_test"), Comment("ShockTest")] +public class ProcessMapPlanShockTest : ProcessMapPlanBase +{ + [Column("stick_slip"), Comment("stickSlip")] + [Range(0.0, 1000.0)] + [Required] + public double StickSlip { get; set; } + + [Column("whirl"), Comment("Whirl")] + [Range(0.0, 1000.0)] + [Required] + public double Whirl { get; set; } + + [Column("axial_vibrations"), Comment("Осевые вибрации")] + [Range(0.0, 1000.0)] + [Required] + public double AxialVibrations { get; set; } + + [Column("combined_vibrations"), Comment("Комбинированные вибрации")] + [Range(0.0, 1000.0)] + [Required] + public double CombinedVibrations { get; set; } + + [Column("weight_on_bit_min"), Comment("Нагрузка минимальная, т")] + [Range(0.0, 30.0)] + [Required] + public double WeightOnBitMin { get; set; } + + [Column("rpm_min"), Comment("Минимальные обороты на ВСП, об/мин.")] + [Range(5, 200)] + [Required] + public double RpmMin { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanShockTest? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanStaticMeasurementOutput.cs b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanStaticMeasurementOutput.cs new file mode 100644 index 00000000..5b83873f --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Functions/ProcessMapPlanStaticMeasurementOutput.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Functions; + +[Table("t_process_map_plan_static_measurement_output"), Comment("Выход статического замера")] +public class ProcessMapPlanStaticMeasurementOutput : ProcessMapPlanBase +{ + [Column("signal_waiting_time"), Comment("Время ожидания выхода сигнала с ТМС, сек.")] + [Range(0.0, 1800.0)] + [Required] + public double SignalWaitingTime { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanStaticMeasurementOutput? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanLoadCapacity.cs b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanLoadCapacity.cs new file mode 100644 index 00000000..b26ae7cb --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanLoadCapacity.cs @@ -0,0 +1,31 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Operations; + +[Table("t_process_map_plan_load_capacity"), Comment("РТК выработка нагрузки")] +public class ProcessMapPlanLoadCapacity : ProcessMapPlanBase +{ + [Column("time_load_capacity_min"), Comment("Время выработки минимальное, сек")] + [Range(0.0, 800.0)] + [Required] + public double TimeLoadCapacityMin { get; set; } + + [Column("differential_pressure_min"), Comment("Перепад давления минимальный, атм")] + [Range(0.1, 400.0)] + [Required] + public double DifferentialPressureMin { get; set; } + + [Column("weight_on_bit_min"), Comment("Нагрузка минимальная, т")] + [Range(0.1, 99.0)] + [Required] + public double WeightOnBitMin { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanLoadCapacity? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanOscillationAngles.cs b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanOscillationAngles.cs new file mode 100644 index 00000000..fc919ff2 --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanOscillationAngles.cs @@ -0,0 +1,37 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Operations; + +[Table("t_process_map_plan_operation_oscillation_angels"), Comment("Определение углов осцилляции")] +public class ProcessMapPlanOscillationAngles : ProcessMapPlanBase +{ + [Column("top_drive_torque"), Comment("Момент на ВСП, кН*м., Уставка")] + [Range(0.0, 35.0)] + [Required] + public double TopDriveTorque { get; set; } + + [Column("top_drive_torque_max"), Comment("Момент на ВСП, кН*м., Ограничение")] + [Range(0.0, 35.0)] + [Required] + public double TopDriveTorqueMax { get; set; } + + [Column("rpm"), Comment("Обороты на ВСП, об/мин., Уставка")] + [Range(0.0, 270.0)] + [Required] + public double Rpm { get; set; } + + [Column("rpm_max"), Comment("Обороты на ВСП, об/мин., Ограничение")] + [Range(0.0, 270.0)] + [Required] + public double RpmMax { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + [Required] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanOscillationAngles? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanPositioningOffTheBottom.cs b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanPositioningOffTheBottom.cs new file mode 100644 index 00000000..f7b98337 --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanPositioningOffTheBottom.cs @@ -0,0 +1,77 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Operations; + +[Table("t_process_map_plan_positioning_off_the_bottom"), Comment("Позиционирование над забоем")] +public class ProcessMapPlanPositioningOffTheBottom : ProcessMapPlanBase +{ + [Column("stop_off_the_bottom"), Comment("Остановка над забоем, м.")] + [Range(0.0, 30.0)] + [Required] + public double StopOffTheBottom { get; set; } + + [Column("pressure_max"), Comment("Максимально допустимое давление, атм.")] + [Range(0.0, 400.0)] + [Required] + public double PressureMax { get; set; } + + [Column("differential_pressure"), Comment("Перепад давления уставка, атм.")] + [Range(0.0, 60.0)] + [Required] + public double DifferentialPressure { get; set; } + + [Column("tight"), Comment("Затяжка, т.")] + [Range(0.0, 20.0)] + [Required] + public double Tight { get; set; } + + [Column("slacking_off"), Comment("Посадка, т.")] + [Range(0.0, 20.0)] + [Required] + public double SlackingOff { get; set; } + + [Column("torque_max"), Comment("Максимально допустимый момент, кН*м.")] + [Range(0.0, 35.0)] + [Required] + public double TorqueMax { get; set; } + + [Column("rop_up"), Comment("Скорость вверх, м/ч.")] + [Range(0.0, 999.0)] + [Required] + public double RopUp { get; set; } + + [Column("rop_down"), Comment("Скорость вниз, м/ч.")] + [Range(0.0, 999.0)] + [Required] + public double RopDown { get; set; } + + [Column("rpm_up"), Comment("Обороты вверх, об/мин.")] + [Range(0.0, 270.0)] + [Required] + public double RpmUp { get; set; } + + [Column("rpm_down"), Comment("Обороты вниз, об/мин.")] + [Range(0.0, 270.0)] + [Required] + public double RpmDown { get; set; } + + [Column("flow_rate_up"), Comment("Расход вверх, л/с.")] + [Range(0.0, 100.0)] + [Required] + public double FlowRateUp { get; set; } + + [Column("flow_rate_down"), Comment("Расход вниз, л/с.")] + [Range(0.0, 100.0)] + [Required] + public double FlowRateDown { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + [Required] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanPositioningOffTheBottom? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanReamingRotor.cs b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanReamingRotor.cs new file mode 100644 index 00000000..0183a09c --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanReamingRotor.cs @@ -0,0 +1,158 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Operations; + +[Table("t_process_map_plan_operation_reaming_rotor"), Comment("РТК проработка ротор")] +public class ProcessMapPlanReamingRotor : ProcessMapPlanBase +{ + [Column("pressure_max"), Comment("Максимально допустимое давление, атм.")] + [Range(0.0, 400.0)] + [Required] + public double PressureMax { get; set; } + + [Column("differential_pressure"), Comment("Перепад давления уставка, атм.")] + [Range(0.0, 60.0)] + [Required] + public double DifferentialPressure { get; set; } + + [Column("tight"), Comment("Затяжка, т.")] + [Range(0.0, 20.0)] + [Required] + public double Tight { get; set; } + + [Column("slacking_off"), Comment("Посадка, т.")] + [Range(0.0, 20.0)] + [Required] + public double SlackingOff { get; set; } + + [Column("torque_max"), Comment("Максимально допустимый момент, кН*м.")] + [Range(0.0, 35.0)] + [Required] + public double TorqueMax { get; set; } + + [Column("reaming1_repetitions_count"), Comment("Проработка 1. Количество повторений, шт.")] + [Range(0, 99)] + [Required] + public int Reaming1RepetitionsCount { get; set; } + + [Column("reaming1_rop_up"), Comment("Проработка 1. Скорость вверх, м/ч.")] + [Range(0.0, 999.0)] + [Required] + public double Reaming1RopUp { get; set; } + + [Column("reaming1_rop_down"), Comment("Проработка 1, Скорость, м/ч., Вниз")] + [Range(0.0, 999.0)] + [Required] + public double Reaming1RopDown { get; set; } + + [Column("reaming1_rpm_up"), Comment("Проработка 1, Обороты, об/мин., Вверх")] + [Range(0.0, 270.0)] + [Required] + public double Reaming1RpmUp { get; set; } + + [Column("reaming1_rpm_down"), Comment("Проработка 1, Обороты, об/мин., Вниз")] + [Range(0.0, 270.0)] + [Required] + public double Reaming1RpmDown { get; set; } + + [Column("reaming1_flow_rate_up"), Comment("Проработка 1, Расход, л/с., Вверх")] + [Range(0.0, 100.0)] + [Required] + public double Reaming1FlowRateUp { get; set; } + + [Column("reaming1_flow_rate_down"), Comment("Проработка 1, Расход, л/с., Вниз")] + [Range(0.0, 100.0)] + [Required] + public double Reaming1FlowRateDown { get; set; } + + [Column("reaming1_interval"), Comment("Проработка 1, Интервал проработки, м.")] + [Range(0.0, 30.0)] + [Required] + public double Reaming1Interval { get; set; } + + [Column("reaming1_stop_point_off_bottom"), Comment("Остановка над забоем, м.")] + [Range(0.0, 10.0)] + [Required] + public double Reaming1StopPointOffBottom { get; set; } + + [Column("reaming2_repetitions_count"), Comment("Проработка 2, Количество повторений, шт.")] + [Range(0, 99)] + public int Reaming2RepetitionsCount { get; set; } + + [Column("reaming2_rop_up"), Comment("Проработка 2, Скорость, м/ч., Вверх")] + [Range(0.0, 999.0)] + public double Reaming2RopUp { get; set; } + + [Column("reaming2_rop_down"), Comment("Проработка 2, Скорость, м/ч., Вниз")] + [Range(0.0, 999.0)] + public double Reaming2RopDown { get; set; } + + [Column("reaming2_rpm_up"), Comment("Проработка 2, Обороты, об/мин., Вверх")] + [Range(0.0, 270.0)] + public double Reaming2RpmUp { get; set; } + + [Column("reaming2_rpm_down"), Comment("Проработка 2, Обороты, об/мин., Вниз")] + [Range(0.0, 270.0)] + public double Reaming2RpmDown { get; set; } + + [Column("reaming2_flow_rate_up"), Comment("Проработка 2, Расход, л/с., Вверх")] + [Range(0.0, 100.0)] + public double Reaming2FlowRateUp { get; set; } + + [Column("reaming2_flow_rate_down"), Comment("Проработка 2, Расход, л/с., Вниз")] + [Range(0.0, 100.0)] + public double Reaming2FlowRateDown { get; set; } + + [Column("reaming2_interval"), Comment("Проработка 2, Интервал проработки, м.")] + [Range(0.0, 30.0)] + public double Reaming2Interval { get; set; } + + [Column("reaming2_stop_point_off_bottom"), Comment("Остановка над забоем, м.")] + [Range(0.0, 10.0)] + public double Reaming2StopPointOffBottom { get; set; } + + [Column("reaming3_repetitions_count"), Comment("Проработка 3, Количество повторений, шт.")] + [Range(0, 99)] + public int Reaming3RepetitionsCount { get; set; } + + [Column("reaming3_rop_up"), Comment("Проработка 3, Скорость, м/ч., Вверх")] + [Range(0.0, 999.0)] + public double Reaming3RopUp { get; set; } + + [Column("reaming3_rop_down"), Comment("Проработка 3, Скорость, м/ч., Вниз")] + [Range(0.0, 999.0)] + public double Reaming3RopDown { get; set; } + + [Column("reaming3_rpm_up"), Comment("Проработка 3, Обороты, об/мин., Вверх")] + [Range(0.0, 270.0)] + public double Reaming3RpmUp { get; set; } + + [Column("reaming3_rpm_down"), Comment("Проработка 3, Обороты, об/мин., Вниз")] + [Range(0.0, 270.0)] + public double Reaming3RpmDown { get; set; } + + [Column("reaming3_flow_rate_up"), Comment("Проработка 3, Расход, л/с., Вверх")] + [Range(0.0, 100.0)] + public double Reaming3FlowRateUp { get; set; } + + [Column("reaming3_flow_rate_down"), Comment("Проработка 3, Расход, л/с., Вниз")] + [Range(0.0, 100.0)] + public double Reaming3FlowRateDown { get; set; } + + [Column("reaming3_interval"), Comment("Проработка 3, Интервал проработки, м.")] + [Range(0.0, 30.0)] + public double Reaming3Interval { get; set; } + + [Column("reaming3_stop_point_off_bottom"), Comment("Остановка над забоем, м.")] + [Range(0.0, 10.0)] + public double Reaming3StopPointOffBottom { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanReamingRotor? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanReamingSlide.cs b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanReamingSlide.cs new file mode 100644 index 00000000..32ddb3b3 --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanReamingSlide.cs @@ -0,0 +1,158 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Operations; + +[Table("t_process_map_plan_reaming_slide"), Comment("РТК проработка слайд")] +public class ProcessMapPlanReamingSlide : ProcessMapPlanBase +{ + [Column("pressure_max"), Comment("Максимально допустимое давление, атм.")] + [Range(0.0, 400.0)] + [Required] + public double PressureMax { get; set; } + + [Column("differential_pressure"), Comment("Перепад давления уставка, атм.")] + [Range(0.0, 60.0)] + [Required] + public double DifferentialPressure { get; set; } + + [Column("tight"), Comment("Затяжка, т.")] + [Range(0.0, 20.0)] + [Required] + public double Tight { get; set; } + + [Column("slacking_off"), Comment("Посадка, т.")] + [Range(0.0, 20.0)] + [Required] + public double SlackingOff { get; set; } + + [Column("torque_max"), Comment("Максимально допустимый момент, кН*м.")] + [Range(0.0, 35.0)] + [Required] + public double TorqueMax { get; set; } + + [Column("reaming1_repetitions_count"), Comment("Проработка 1. Количество повторений, шт.")] + [Range(0.0, 99.0)] + [Required] + public double Reaming1RepetitionsCount { get; set; } + + [Column("reaming1_rop_up"), Comment("Проработка 1. Скорость вверх, м/ч.")] + [Range(0.0, 999.0)] + [Required] + public double Reaming1RopUp { get; set; } + + [Column("reaming1_rop_down"), Comment("Проработка 1. Скорость вниз, м/ч.")] + [Range(0.0, 999.0)] + [Required] + public double Reaming1RopDown { get; set; } + + [Column("reaming1_rpm_up"), Comment("Проработка 1, Обороты, об/мин., Вверх")] + [Range(0.0, 270.0)] + [Required] + public double Reaming1RpmUp { get; set; } + + [Column("reaming1_rpm_down"), Comment("Проработка 1, Обороты, об/мин., Вниз")] + [Range(0.0, 270.0)] + [Required] + public double Reaming1RpmDown { get; set; } + + [Column("reaming1_flow_rate_up"), Comment("Проработка 1, Расход, л/с., Вверх")] + [Range(0.0, 100.0)] + [Required] + public double Reaming1FlowRateUp { get; set; } + + [Column("reaming1_flow_rate_down"), Comment("Проработка 1, Расход, л/с., Вниз")] + [Range(0.0, 100.0)] + [Required] + public double Reaming1FlowRateDown { get; set; } + + [Column("reaming1_interval"), Comment("Проработка 1, Интервал проработки, м.")] + [Range(0.0, 30.0)] + [Required] + public double Reaming1Interval { get; set; } + + [Column("reaming1_stop_point_off_bottom"), Comment("Остановка над забоем, м.")] + [Range(0.0, 10.0)] + [Required] + public double Reaming1StopPointOffBottom { get; set; } + + [Column("reaming2_repetitions_count"), Comment("Проработка 2, Количество повторений, шт.")] + [Range(0.0, 99.0)] + public double Reaming2RepetitionsCount { get; set; } + + [Column("reaming2_rop_up"), Comment("Проработка 2, Скорость, м/ч., Вверх")] + [Range(0.0, 999.0)] + public double Reaming2RopUp { get; set; } + + [Column("reaming2_rop_down"), Comment("Проработка 2, Скорость, м/ч., Вниз")] + [Range(0.0, 999.0)] + public double Reaming2RopDown { get; set; } + + [Column("reaming2_rpm_up"), Comment("Проработка 2, Обороты, об/мин., Вверх")] + [Range(0.0, 270.0)] + public double Reaming2RpmUp { get; set; } + + [Column("reaming2_rpm_down"), Comment("Проработка 2, Обороты, об/мин., Вниз")] + [Range(0.0, 270.0)] + public double Reaming2RpmDown { get; set; } + + [Column("reaming2_flow_rate_up"), Comment("Проработка 2, Расход, л/с., Вверх")] + [Range(0.0, 100.0)] + public double Reaming2FlowRateUp { get; set; } + + [Column("reaming2_flow_rate_down"), Comment("Проработка 2, Расход, л/с., Вниз")] + [Range(0.0, 100.0)] + public double Reaming2FlowRateDown { get; set; } + + [Column("reaming2_interval"), Comment("Проработка 2, Интервал проработки, м.")] + [Range(0.0, 30.0)] + public double Reaming2Interval { get; set; } + + [Column("reaming2_stop_point_off_bottom"), Comment("Остановка над забоем, м.")] + [Range(0.0, 10.0)] + public double Reaming2StopPointOffBottom { get; set; } + + [Column("reaming3_repetitions_count"), Comment("Проработка 3, Количество повторений, шт.")] + [Range(0.0, 99.0)] + public double Reaming3RepetitionsCount { get; set; } + + [Column("reaming3_rop_up"), Comment("Проработка 3, Скорость, м/ч., Вверх")] + [Range(0.0, 999.0)] + public double Reaming3RopUp { get; set; } + + [Column("reaming3_rop_down"), Comment("Проработка 3, Скорость, м/ч., Вниз")] + [Range(0.0, 999.0)] + public double Reaming3RopDown { get; set; } + + [Column("reaming3_rpm_up"), Comment("Проработка 3, Обороты, об/мин., Вверх")] + [Range(0.0, 270.0)] + public double Reaming3RpmUp { get; set; } + + [Column("reaming3_rpm_down"), Comment("Проработка 3, Обороты, об/мин., Вниз")] + [Range(0.0, 270.0)] + public double Reaming3RpmDown { get; set; } + + [Column("reaming3_flow_rate_up"), Comment("Проработка 3, Расход, л/с., Вверх")] + [Range(0.0, 100.0)] + public double Reaming3FlowRateUp { get; set; } + + [Column("reaming3_flow_rate_down"), Comment("Проработка 3, Расход, л/с., Вниз")] + [Range(0.0, 100.0)] + public double Reaming3FlowRateDown { get; set; } + + [Column("reaming3_interval"), Comment("Проработка 3, Интервал проработки, м.")] + [Range(0.0, 30.0)] + public double Reaming3Interval { get; set; } + + [Column("reaming3_stop_point_off_bottom"), Comment("Остановка над забоем, м.")] + [Range(0.0, 10.0)] + public double Reaming3StopPointOffBottom { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanReamingSlide? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanRecordingStaticMeasurement.cs b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanRecordingStaticMeasurement.cs new file mode 100644 index 00000000..5360457b --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanRecordingStaticMeasurement.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Operations; + +[Table("t_process_map_plan_recording_static_measurement"), Comment("Запись статического замера")] +public class ProcessMapPlanRecordingStaticMeasurement : ProcessMapPlanBase +{ + [Column("measurement_recording_time"), Comment("Время записи замера, сек")] + [Range(0.0, 1800.0)] + [Required] + public double MeasurementRecordingTime { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanRecordingStaticMeasurement? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/ProcessMapPlanRotor.cs b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanRotor.cs similarity index 51% rename from AsbCloudDb/Model/ProcessMapPlan/ProcessMapPlanRotor.cs rename to AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanRotor.cs index c4bec8f4..3f0d5218 100644 --- a/AsbCloudDb/Model/ProcessMapPlan/ProcessMapPlanRotor.cs +++ b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanRotor.cs @@ -3,74 +3,75 @@ using System.ComponentModel.DataAnnotations.Schema; using AsbCloudDb.Model.ProcessMapPlan; using Microsoft.EntityFrameworkCore; -namespace AsbCloudDb.Model.ProcessMaps; +namespace AsbCloudDb.Model.ProcessMapPlan.Operations; [Table("t_process_map_plan_rotor"), Comment("РТК план бурение ротор")] public class ProcessMapPlanRotor : ProcessMapPlanBase { - [Column("rop_limit_max"), Comment("Максимально допустимая скорость, м/ч")] + [Column("rop_max"), Comment("Максимально допустимая скорость, м/ч")] [Range(0, 800.0)] - [Required] - public double RopLimitMax { get; set; } - - [Column("pressure_limit_max"), Comment("Максимально допустимое давление, атм")] - [Range(0.0, 400.0)] [Required] - public double PressureLimitMax { get; set; } + public double RopMax { get; set; } + + [Column("pressure_max"), Comment("Максимально допустимое давление, атм")] + [Range(0.0, 400.0)] + [Required] + public double PressureMax { get; set; } [Column("differential_pressure"), Comment("Перепад давления, атм. Уставка")] [Range(0.0, 60.0)] [Required] public double DifferentialPressure { get; set; } - [Column("differential_pressure_limit_max"), Comment("Перепад давления, атм. Ограничение")] + [Column("differential_pressure_max"), Comment("Перепад давления, атм. Ограничение")] [Range(0.0, 60.0)] [Required] - public double DifferentialPressureLimitMax { get; set; } + public double DifferentialPressureMax { get; set; } [Column("weight_on_bit"), Comment("Нагрузка, т. Уставка")] [Range(0.0, 99.0)] [Required] public double WeightOnBit { get; set; } - [Column("weight_on_bit_limit_max"), Comment("Нагрузка, т. Ограничение")] + [Column("weight_on_bit_max"), Comment("Нагрузка, т. Ограничение")] [Range(0.0, 99.0)] [Required] - public double WeightOnBitLimitMax { get; set; } + public double WeightOnBitMax { get; set; } [Column("top_drive_torque"), Comment("Момент на ВСП, кН*м. Уставка")] [Range(0.0, 35.0)] [Required] public double TopDriveTorque { get; set; } - [Column("top_drive_torque_limit_max"), Comment("Момент на ВСП, кН*м. Ограничение")] + [Column("top_drive_torque_max"), Comment("Момент на ВСП, кН*м. Ограничение")] [Range(0.0, 35.0)] [Required] - public double TopDriveTorqueLimit { get; set; } + public double TopDriveTorqueMax { get; set; } - [Column("revolution_per_minute"), Comment("Обороты на ВСП, об/мин. Уставка")] + [Column("rpm"), Comment("Обороты на ВСП, об/мин. Уставка")] [Range(0.0, 270.0)] [Required] - public double RevolutionsPerMinute { get; set; } + public double Rpm { get; set; } - [Column("revolutions_per_minute_limit_max"), Comment("Обороты на ВСП, об/мин. Ограничение")] + [Column("rpm_max"), Comment("Обороты на ВСП, об/мин. Ограничение")] [Range(0.0, 270.0)] [Required] - public double RevolutionsPerMinuteLimitMax { get; set; } + public double RpmMax { get; set; } [Column("flow_rate"), Comment("Расход л/с. Уставка")] [Range(0.0, 100.0)] [Required] public double FlowRate { get; set; } - [Column("flow_rate_limit_max"), Comment("Расход л/с. Ограничение")] + [Column("flow_rate_max"), Comment("Расход л/с. Ограничение")] [Range(0.0, 100.0)] [Required] - public double FlowRateLimitMax { get; set; } + public double FlowRateMax { get; set; } [Column("note"), Comment("Примечание"), StringLength(1024)] + [Required] public string Note { get; set; } = string.Empty; [ForeignKey(nameof(IdPrevious))] - public virtual ProcessMapPlanRotor? Previous { get; set; } + public virtual ProcessMapPlanRotor? Previous { get; set; } } \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanSlide.cs b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanSlide.cs new file mode 100644 index 00000000..883ff97c --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanSlide.cs @@ -0,0 +1,66 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Operations; + +[Table("t_process_map_plan_slide"), Comment("РТК план бурение слайд")] +public class ProcessMapPlanSlide : ProcessMapPlanBase +{ + [Column("rop_max"), Comment("Максимально допустимая скорость, м/ч.")] + [Range(0, 800)] + [Required] + public double RopMax { get; set; } + + [Column("pressure_max"), Comment("Максимально допустимое давление, атм.")] + [Range(0, 400)] + [Required] + public double PressureMax { get; set; } + + [Column("differential_pressure"), Comment("Перепад давления уставка, атм.")] + [Range(0, 60)] + [Required] + public double DifferentialPressure { get; set; } + + [Column("differential_pressure_max"), Comment("Перепад давления ограничение, атм.")] + [Range(0, 60)] + [Required] + public double DifferentialPressureMax { get; set; } + + [Column("weight_on_bit"), Comment("Нагрузка уставка, т.")] + [Range(0, 99)] + [Required] + public double WeightOnBit { get; set; } + + [Column("weight_on_bit_max"), Comment("Нагрузка ограничение, т.")] + [Range(0, 99)] + [Required] + public double WeightOnBitMax { get; set; } + + [Column("flow_rate"), Comment("Расход уставка, л/с.")] + [Range(0, 100)] + [Required] + public double FlowRate { get; set; } + + [Column("flow_rate_max"), Comment("Расход ограничение, л/с.")] + [Range(0, 100)] + [Required] + public double FlowRateMax { get; set; } + + [Column("spring"), Comment("Расчётная пружина, градус")] + [Range(0, 9999)] + [Required] + public double Spring { get; set; } + + [Column("buckling"), Comment("Складывание инструмента, м.")] + [Range(0, 9999)] + [Required] + public double Buckling { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanSlide? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanSwitchingOffThePump.cs b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanSwitchingOffThePump.cs new file mode 100644 index 00000000..78a0a91d --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanSwitchingOffThePump.cs @@ -0,0 +1,25 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Operations; + +[Table("t_process_map_plan_operation_switching_off_the_pump"), Comment("Выключение насоса")] +public class ProcessMapPlanSwitchingOffThePump : ProcessMapPlanBase +{ + [Column("duration"), Comment("Продолжительность, сек.")] + [Range(0.0, 1800.0)] + [Required] + public double Duration { get; set; } + + [Column("residual_pressure_limit"), Comment("Лимит остаточного давления, атм.")] + [Range(0.0, 100.0)] + public double ResidualPressureLimit { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanSwitchingOffThePump? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanSwitchingToTheMode.cs b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanSwitchingToTheMode.cs new file mode 100644 index 00000000..6ea265ea --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanSwitchingToTheMode.cs @@ -0,0 +1,32 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Operations; + +[Table("t_process_map_plan_switching_to_the_mode"), Comment("Выход на плановый расход")] +public class ProcessMapPlanSwitchingToTheMode : ProcessMapPlanBase +{ + [Column("ramp_time"), Comment("Время выхода буровых насосов на плановый расход, сек.")] + [Range(0.0, 3600.0)] + [Required] + public double RampTime { get; set; } + + [Column("flow_rate"), Comment("Расход, л/с")] + [Range(0.0, 100.0)] + [Required] + public double FlowRate { get; set; } + + [Column("pressure_limit"), Comment("Максимально допустимое давление, атм.")] + [Range(0.0, 400.0)] + [Required] + public double PressureMax { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + [Required] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanSwitchingToTheMode? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanTFOrientation.cs b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanTFOrientation.cs new file mode 100644 index 00000000..79247ad9 --- /dev/null +++ b/AsbCloudDb/Model/ProcessMapPlan/Operations/ProcessMapPlanTFOrientation.cs @@ -0,0 +1,86 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using AsbCloudDb.Model.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; + +namespace AsbCloudDb.Model.ProcessMapPlan.Operations; + +[Table("t_process_map_plan_tf_orientation"), Comment("Выставление")] +public class ProcessMapPlanTFOrientation : ProcessMapPlanBase +{ + [Column("tf_setpoint"), Comment("Задание TF, град.")] + [Range(0.0, 360.0)] + [Required] + public double TFSetpoint { get; set; } + + [Column("spring"), Comment("Пружина, град.")] + [Range(0.0, 10000.0)] + [Required] + public double Spring { get; set; } + + [Column("pressure_max"), Comment("Максимальное давление, атм.")] + [Range(0.0, 400.0)] + [Required] + public double PressureMax { get; set; } + + [Column("differential_pressure"), Comment("Перепад давления, атм.")] + [Range(0.0, 60.0)] + [Required] + public double DifferentialPressure { get; set; } + + [Column("tight"), Comment("Затяжка, т.")] + [Range(0.0, 20.0)] + [Required] + public double Tight { get; set; } + + [Column("slacking_off"), Comment("Посадка, т.")] + [Range(0.0, 20.0)] + [Required] + public double SlackingOff { get; set; } + + [Column("torque_max"), Comment("Максимально допустимый момент, кН*м.")] + [Range(0.0, 35.0)] + [Required] + public double TorqueMax { get; set; } + + [Column("repetitions_count"), Comment("Количество расхаживаний, шт.")] + [Range(0.0, 99.0)] + [Required] + public int RepetitionsCount { get; set; } + + [Column("rop_up"), Comment("Скорость вверх, м/ч.")] + [Range(0.0, 999.0)] + [Required] + public double RopUp { get; set; } + + [Column("rop_down"), Comment("Скорость вниз, м/ч.")] + [Range(0.0, 999.0)] + [Required] + public double RopDown { get; set; } + + [Column("flow_rate_up"), Comment("Расход вверх, л/с.")] + [Range(0.0, 100.0)] + [Required] + public double FlowRateUp { get; set; } + + [Column("flow_rate_down"), Comment("Расход вниз, л/с.")] + [Range(0.0, 100.0)] + [Required] + public double FlowRateDown { get; set; } + + [Column("interval"), Comment("Интервал расхаживания, м.")] + [Range(0.0, 30.0)] + [Required] + public double Interval { get; set; } + + [Column("stop_point_off_bottom"), Comment("Остановка над забоем, м.")] + [Range(0.0, 10.0)] + [Required] + public double StopPointOffBottom { get; set; } + + [Column("note"), Comment("Примечание"), StringLength(1024)] + public string Note { get; set; } = string.Empty; + + [ForeignKey(nameof(IdPrevious))] + public virtual ProcessMapPlanTFOrientation? Previous { get; set; } +} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/ProcessMapPlanReam.cs b/AsbCloudDb/Model/ProcessMapPlan/ProcessMapPlanReam.cs deleted file mode 100644 index 05659bfa..00000000 --- a/AsbCloudDb/Model/ProcessMapPlan/ProcessMapPlanReam.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.ComponentModel.DataAnnotations.Schema; -using AsbCloudDb.Model.ProcessMapPlan; -using Microsoft.EntityFrameworkCore; - -namespace AsbCloudDb.Model.ProcessMaps; - -[Table("t_process_map_plan_ream"), Comment("РТК проработка скважины")] -public class ProcessMapPlanReam : ProcessMapPlanBase -{ - [Column("repeats"), Comment("Количество повторений")] - public double Repeats { get; set; } - - [Column("spin_upward"), Comment("Вращение при движении вверх, об/мин")] - public double SpinUpward { get; set; } - - [Column("spin_downward"), Comment("Вращение при движении вниз, об/мин")] - public double SpinDownward { get; set; } - - [Column("speed_upward"), Comment("Скорость подъёма, м/ч")] - public double SpeedUpward { get; set; } - - [Column("speed_downward"), Comment("Скорость спуска, м/ч")] - public double SpeedDownward { get; set; } - - [Column("setpoint_drag"), Comment("Уставка зятяжки, т")] - public double SetpointDrag { get; set; } - - [Column("setpoint_tight"), Comment("Уставка посадки, т")] - public double SetpointTight { get; set; } - - [Column("pressure"), Comment("Давление, атм")] - public double Pressure { get; set; } - - [Column("torque"), Comment("Момент, кН*м")] - public double Torque { get; set; } -} \ No newline at end of file diff --git a/AsbCloudDb/Model/ProcessMapPlan/ProcessMapPlanSlide.cs b/AsbCloudDb/Model/ProcessMapPlan/ProcessMapPlanSlide.cs deleted file mode 100644 index 58e2dc92..00000000 --- a/AsbCloudDb/Model/ProcessMapPlan/ProcessMapPlanSlide.cs +++ /dev/null @@ -1,66 +0,0 @@ -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using AsbCloudDb.Model.ProcessMapPlan; -using Microsoft.EntityFrameworkCore; - -namespace AsbCloudDb.Model.ProcessMaps; - -[Table("t_process_map_plan_slide"), Comment("РТК план бурение слайд")] -public class ProcessMapPlanSlide : ProcessMapPlanBase -{ - [Column("rop_limit_max"), Comment("Максимально допустимая скорость, м/ч")] - [Range(0, 800.0)] - [Required] - public double RopLimitMax { get; set; } - - [Column("pressure_limit_max"), Comment("Максимально допустимое давление, атм")] - [Range(0, 400.0)] - [Required] - public double PressureLimitMax { get; set; } - - [Column("differential_pressure"), Comment("Перепад давления, атм. Уставка")] - [Range(0, 60.0)] - [Required] - public double DifferentialPressure { get; set; } - - [Column("differential_pressure_limit_max"), Comment("Перепад давления, атм. Ограничение")] - [Range(0, 60.0)] - [Required] - public double DifferentialPressureLimitMax { get; set; } - - [Column("weight_on_bit"), Comment("Нагрузка, т. Уставка")] - [Range(0, 50.0)] - [Required] - public double WeightOnBit { get; set; } - - [Column("weight_on_bit_limit_max"), Comment("Нагрузка, т. Ограничение")] - [Range(0, 50.0)] - [Required] - public double WeightOnBitLimitMax { get; set; } - - [Column("flow_rate"), Comment("Расход л/с. Уставка")] - [Range(0, 100.0)] - [Required] - public double FlowRate { get; set; } - - [Column("flow_rate_limit_max"), Comment("Расход л/с. Ограничение")] - [Range(0, 100.0)] - [Required] - public double FlowRateLimitMax { get; set; } - - [Column("spring"), Comment("Расчётная пружина, градус")] - [Range(0, 9999.9)] - [Required] - public double Spring { get; set; } - - [Column("tool_buckling"), Comment("Складывание инструмента, м")] - [Range(0, 9999.9)] - [Required] - public double ToolBuckling { get; set; } - - [Column("note"), Comment("Примечание"), StringLength(1024)] - public string Note { get; set; } = string.Empty; - - [ForeignKey(nameof(IdPrevious))] - public virtual ProcessMapPlanSlide? Previous { get; set; } -} \ No newline at end of file diff --git a/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj b/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj index 563b41f5..280ea6cc 100644 --- a/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj +++ b/AsbCloudInfrastructure/AsbCloudInfrastructure.csproj @@ -14,9 +14,24 @@ - + + + + + + + + + + + + + + + + @@ -40,9 +55,24 @@ - + + + + + + + + + + + + + + + + diff --git a/AsbCloudInfrastructure/DependencyInjection.cs b/AsbCloudInfrastructure/DependencyInjection.cs index 86ec923b..3bd0bbc0 100644 --- a/AsbCloudInfrastructure/DependencyInjection.cs +++ b/AsbCloudInfrastructure/DependencyInjection.cs @@ -4,6 +4,8 @@ using AsbCloudApp.Data.DetectedOperation; using AsbCloudApp.Data.DrillTestReport; using AsbCloudApp.Data.Manuals; using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Data.ProcessMaps.Operations; using AsbCloudApp.Data.SAUB; using AsbCloudApp.Data.Subsystems; using AsbCloudApp.Data.Trajectory; @@ -17,7 +19,8 @@ using AsbCloudDb.Model; using AsbCloudDb.Model.DailyReports.Blocks.TimeBalance; using AsbCloudDb.Model.Manuals; using AsbCloudDb.Model.ProcessMapPlan; -using AsbCloudDb.Model.ProcessMaps; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudDb.Model.ProcessMapPlan.Operations; using AsbCloudDb.Model.Trajectory; using AsbCloudDb.Model.WellSections; using AsbCloudInfrastructure.Background; @@ -145,6 +148,118 @@ namespace AsbCloudInfrastructure { Item = src.Adapt() }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); + + TypeAdapterConfig>.NewConfig() + .Include>() + .Map(dest => dest, src => new ChangeLogDto() + { + Item = src.Adapt() + }); } public static IServiceCollection AddInfrastructure(this IServiceCollection services, IConfiguration configuration) @@ -211,8 +326,68 @@ namespace AsbCloudInfrastructure ProcessMapPlanBaseRepository>(); services.AddTransient< - IChangeLogRepository, - ProcessMapPlanBaseRepository>(); + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); + + services.AddTransient< + IChangeLogRepository, + ProcessMapPlanBaseRepository>(); services.AddTransient(); @@ -259,8 +434,26 @@ namespace AsbCloudInfrastructure services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient>(); services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient>(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); @@ -316,7 +509,22 @@ namespace AsbCloudInfrastructure services.AddTransient(); services.AddTransient(); services.AddTransient(); - services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); @@ -324,7 +532,22 @@ namespace AsbCloudInfrastructure services.AddTransient(); services.AddTransient(); - services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanAntiCrashRotationTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanAntiCrashRotationTemplate.cs new file mode 100644 index 00000000..48cbfc9c --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanAntiCrashRotationTemplate.cs @@ -0,0 +1,25 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Data.ProcessMaps.Operations; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanAntiCrashRotationTemplate : ITemplateParameters +{ + public string SheetName => "Противоаварийное вращение"; + + public int HeaderRowsCount => 3; + + public string FileName => "ProcessMapPlanAntiCrashRotationTemplate.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanAntiCrashRotationDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanAntiCrashRotationDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanAntiCrashRotationDto.DepthEnd), new Cell(3, typeof(double)) }, + { nameof(ProcessMapPlanAntiCrashRotationDto.TopDriveRpmMin), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanAntiCrashRotationDto.TopDriveStartMinFlowRate), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanAntiCrashRotationDto.TopDriveTorqueMax), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanAntiCrashRotationDto.Note), new Cell(7, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanAutoHoldTFTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanAutoHoldTFTemplate.cs new file mode 100644 index 00000000..3b2f4c4f --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanAutoHoldTFTemplate.cs @@ -0,0 +1,24 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanAutoHoldTFTemplate : ITemplateParameters +{ + public string SheetName => "Автоудержание TF"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanAutoHoldTFTemplate.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanAutoHoldTFDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanAutoHoldTFDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanAutoHoldTFDto.DepthEnd), new Cell(3, typeof(double)) }, + + { nameof(ProcessMapPlanAutoHoldTFDto.ZenithAngle), new Cell(4, typeof(double)) }, + + { nameof(ProcessMapPlanAutoHoldTFDto.Note), new Cell(5, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanDamperTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanDamperTemplate.cs new file mode 100644 index 00000000..018d574e --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanDamperTemplate.cs @@ -0,0 +1,24 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanDamperTemplate : ITemplateParameters +{ + public string SheetName => "Демпфер"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanDamperTemplate.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanDamperDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanDamperDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanDamperDto.DepthEnd), new Cell(3, typeof(double)) }, + + { nameof(ProcessMapPlanDamperDto.StickSlip), new Cell(4, typeof(double)) }, + + { nameof(ProcessMapPlanDamperDto.Note), new Cell(5, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanDrillTestTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanDrillTestTemplate.cs new file mode 100644 index 00000000..aac137ce --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanDrillTestTemplate.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanDrillTestTemplate : ITemplateParameters +{ + public string SheetName => "Дрилтест"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanDrillTestTemplate.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanDrillTestDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanDrillTestDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanDrillTestDto.DepthEnd), new Cell(3, typeof(double)) }, + + { nameof(ProcessMapPlanDrillTestDto.WeightOnBitMin), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanDrillTestDto.WeightOnBitStepsCount), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanDrillTestDto.RpmMin), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanDrillTestDto.RpmStepsCount), new Cell(7, typeof(double)) }, + { nameof(ProcessMapPlanDrillTestDto.LengthStep), new Cell(8, typeof(double)) }, + + { nameof(ProcessMapPlanDrillTestDto.Note), new Cell(9, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanLoadCapacityTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanLoadCapacityTemplate.cs new file mode 100644 index 00000000..c7a395ef --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanLoadCapacityTemplate.cs @@ -0,0 +1,25 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Data.ProcessMaps.Operations; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanLoadCapacityTemplate : ITemplateParameters +{ + public string SheetName => "Выработка нагрузки"; + + public int HeaderRowsCount => 3; + + public string FileName => "ProcessMapPlanLoadCapacityTemplate.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanLoadCapacityDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanLoadCapacityDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanLoadCapacityDto.DepthEnd), new Cell(3, typeof(double)) }, + { nameof(ProcessMapPlanLoadCapacityDto.TimeLoadCapacityMin), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanLoadCapacityDto.DifferentialPressureMin), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanLoadCapacityDto.WeightOnBitMin), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanLoadCapacityDto.Note), new Cell(7, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanOscillationAnglesTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanOscillationAnglesTemplate.cs new file mode 100644 index 00000000..0478663a --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanOscillationAnglesTemplate.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Data.ProcessMaps.Operations; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanOscillationAnglesTemplate : ITemplateParameters +{ + public string SheetName => "Определение углов осцилляции"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanOscillationAnglesTemplate.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanOscillationAnglesDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanOscillationAnglesDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanOscillationAnglesDto.DepthEnd), new Cell(3, typeof(double)) }, + + { nameof(ProcessMapPlanOscillationAnglesDto.TopDriveTorque), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanOscillationAnglesDto.TopDriveTorqueMax), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanOscillationAnglesDto.Rpm), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanOscillationAnglesDto.RpmMax), new Cell(7, typeof(double)) }, + + { nameof(ProcessMapPlanOscillationAnglesDto.Note), new Cell(8, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanOscillationTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanOscillationTemplate.cs new file mode 100644 index 00000000..b6d1e595 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanOscillationTemplate.cs @@ -0,0 +1,27 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanOscillationTemplate : ITemplateParameters +{ + public string SheetName => "Осцилляция"; + + public int HeaderRowsCount => 3; + + public string FileName => "ProcessMapPlanOscillationTemplate.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanOscillationDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanOscillationDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanOscillationDto.DepthEnd), new Cell(3, typeof(double)) }, + { nameof(ProcessMapPlanOscillationDto.OptimalOscillationAngle), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanOscillationDto.RpmRight), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanOscillationDto.RpmLeft), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanOscillationDto.TorqueMaxRight), new Cell(7, typeof(double)) }, + { nameof(ProcessMapPlanOscillationDto.TorqueMaxLeft), new Cell(8, typeof(double)) }, + { nameof(ProcessMapPlanOscillationDto.Mode), new Cell(10, typeof(int)) }, + { nameof(ProcessMapPlanOscillationDto.Note), new Cell(11, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanPositioningOffTheBottomTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanPositioningOffTheBottomTemplate.cs new file mode 100644 index 00000000..4f6e8121 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanPositioningOffTheBottomTemplate.cs @@ -0,0 +1,36 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Data.ProcessMaps.Operations; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanPositioningOffTheBottomTemplate : ITemplateParameters +{ + public string SheetName => "Позиционирование над забоем"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanPositioningOffTheBottomTemplate.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanPositioningOffTheBottomDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.DepthEnd), new Cell(3, typeof(double)) }, + + { nameof(ProcessMapPlanPositioningOffTheBottomDto.StopOffTheBottom), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.PressureMax), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.DifferentialPressure), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.Tight), new Cell(7, typeof(double)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.SlackingOff), new Cell(8, typeof(double)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.TorqueMax), new Cell(9, typeof(double)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.RopUp), new Cell(10, typeof(double)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.RopDown), new Cell(11, typeof(double)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.RpmUp), new Cell(12, typeof(double)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.RpmDown), new Cell(13, typeof(double)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.FlowRateUp), new Cell(14, typeof(double)) }, + { nameof(ProcessMapPlanPositioningOffTheBottomDto.FlowRateDown), new Cell(15, typeof(double)) }, + + { nameof(ProcessMapPlanPositioningOffTheBottomDto.Note), new Cell(16, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanReamTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanReamTemplate.cs deleted file mode 100644 index 5c454d7b..00000000 --- a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanReamTemplate.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System.Collections.Generic; -using AsbCloudApp.Data.ProcessMaps; - -namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; - -public class ProcessMapPlanReamTemplate : ITemplateParameters -{ - public string SheetName => "План"; - - public int HeaderRowsCount => 1; - - public string FileName => "ProcessMapPlanReamTemplate.xlsx"; - - public IDictionary Cells => new Dictionary - { - { nameof(ProcessMapPlanReamDto.Section), new Cell(1, typeof(string)) }, - { nameof(ProcessMapPlanReamDto.DepthStart), new Cell(2, typeof(double)) }, - { nameof(ProcessMapPlanReamDto.DepthEnd), new Cell(3, typeof(double)) }, - { nameof(ProcessMapPlanReamDto.Repeats), new Cell(4, typeof(double)) }, - { nameof(ProcessMapPlanReamDto.SpinUpward), new Cell(5, typeof(double)) }, - { nameof(ProcessMapPlanReamDto.SpinDownward), new Cell(6, typeof(double)) }, - { nameof(ProcessMapPlanReamDto.SpeedUpward), new Cell(7, typeof(double)) }, - { nameof(ProcessMapPlanReamDto.SpeedDownward), new Cell(8, typeof(double)) }, - { nameof(ProcessMapPlanReamDto.SetpointDrag), new Cell(9, typeof(double)) }, - { nameof(ProcessMapPlanReamDto.SetpointTight), new Cell(10, typeof(double)) }, - { nameof(ProcessMapPlanReamDto.Pressure), new Cell(11, typeof(double)) }, - { nameof(ProcessMapPlanReamDto.Torque), new Cell(12, typeof(double)) }, - }; -} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanReamingRotorTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanReamingRotorTemplate.cs new file mode 100644 index 00000000..fe763beb --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanReamingRotorTemplate.cs @@ -0,0 +1,55 @@ +using System.Collections.Generic; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanReamingRotorTemplate : ITemplateParameters +{ + public string SheetName => "Проработка ротор"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanReamingRotorTemplate.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanReamingRotorDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanReamingRotorDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.DepthEnd), new Cell(3, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.PressureMax), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.DifferentialPressure), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Tight), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.SlackingOff), new Cell(7, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.TorqueMax), new Cell(8, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming1RepetitionsCount), new Cell(9, typeof(int)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming1RopUp), new Cell(10, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming1RopDown), new Cell(11, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming1RpmUp), new Cell(12, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming1RpmDown), new Cell(13, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming1FlowRateUp), new Cell(14, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming1FlowRateDown), new Cell(15, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming1Interval), new Cell(16, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming1StopPointOffBottom), new Cell(17, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming2RepetitionsCount), new Cell(18, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming2RopUp), new Cell(19, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming2RopDown), new Cell(20, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming2RpmUp), new Cell(21, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming2RpmDown), new Cell(22, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming2FlowRateUp), new Cell(23, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming2FlowRateDown), new Cell(24, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming2Interval), new Cell(25, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming2StopPointOffBottom), new Cell(26, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming3RepetitionsCount), new Cell(27, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming3RopUp), new Cell(28, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming1RopDown), new Cell(29, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming3RpmUp), new Cell(30, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming3RpmDown), new Cell(31, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming3FlowRateUp), new Cell(32, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming3FlowRateDown), new Cell(33, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming3Interval), new Cell(34, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Reaming3StopPointOffBottom), new Cell(35, typeof(double)) }, + { nameof(ProcessMapPlanReamingRotorDto.Note), new Cell(36, typeof(string)) }, + + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanReamingSlideTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanReamingSlideTemplate.cs new file mode 100644 index 00000000..ccdf0e41 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanReamingSlideTemplate.cs @@ -0,0 +1,53 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanReamingSlideTemplate : ITemplateParameters +{ + public string SheetName => "Проработка слайд"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanReamingSlideTemplate.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanReamingSlideDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanReamingSlideDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.DepthEnd), new Cell(3, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.PressureMax), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.DifferentialPressure), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Tight), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.SlackingOff), new Cell(7, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.TorqueMax), new Cell(8, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming1RepetitionsCount), new Cell(9, typeof(int)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming1RopUp), new Cell(10, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming1RopDown), new Cell(11, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming1RpmUp), new Cell(12, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming1RpmDown), new Cell(13, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming1FlowRateUp), new Cell(14, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming1FlowRateDown), new Cell(15, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming1Interval), new Cell(16, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming1StopPointOffBottom), new Cell(17, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming2RepetitionsCount), new Cell(18, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming2RopUp), new Cell(19, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming2RopDown), new Cell(20, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming2RpmUp), new Cell(21, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming2RpmDown), new Cell(22, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming2FlowRateUp), new Cell(23, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming2FlowRateDown), new Cell(24, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming2Interval), new Cell(25, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming2StopPointOffBottom), new Cell(26, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming3RepetitionsCount), new Cell(27, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming3RopUp), new Cell(28, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming1RopDown), new Cell(29, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming3RpmUp), new Cell(30, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming3RpmDown), new Cell(31, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming3FlowRateUp), new Cell(32, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming3FlowRateDown), new Cell(33, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming3Interval), new Cell(34, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Reaming3StopPointOffBottom), new Cell(35, typeof(double)) }, + { nameof(ProcessMapPlanReamingSlideDto.Note), new Cell(36, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanRecordingStaticMeasurementTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanRecordingStaticMeasurementTemplate.cs new file mode 100644 index 00000000..b0bf3f48 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanRecordingStaticMeasurementTemplate.cs @@ -0,0 +1,25 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Data.ProcessMaps.Operations; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanRecordingStaticMeasurementTemplate : ITemplateParameters +{ + public string SheetName => "Запись статического замера"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanRecordingStaticMeasurementTemplate.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanRecordingStaticMeasurementDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanRecordingStaticMeasurementDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanRecordingStaticMeasurementDto.DepthEnd), new Cell(3, typeof(double)) }, + + { nameof(ProcessMapPlanRecordingStaticMeasurementDto.MeasurementRecordingTime), new Cell(4, typeof(double)) }, + + { nameof(ProcessMapPlanRecordingStaticMeasurementDto.Note), new Cell(5, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanRotorTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanRotorTemplate.cs index f7a63207..85b3cba7 100644 --- a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanRotorTemplate.cs +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanRotorTemplate.cs @@ -1,5 +1,5 @@ using System.Collections.Generic; -using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; @@ -16,18 +16,18 @@ public class ProcessMapPlanRotorTemplate : ITemplateParameters { nameof(ProcessMapPlanRotorDto.Section), new Cell(1, typeof(string)) }, { nameof(ProcessMapPlanRotorDto.DepthStart), new Cell(2, typeof(double)) }, { nameof(ProcessMapPlanRotorDto.DepthEnd), new Cell(3, typeof(double)) }, - { nameof(ProcessMapPlanRotorDto.RopLimitMax), new Cell(4, typeof(double)) }, - { nameof(ProcessMapPlanRotorDto.PressureLimitMax), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanRotorDto.RopMax), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanRotorDto.PressureMax), new Cell(5, typeof(double)) }, { nameof(ProcessMapPlanRotorDto.DifferentialPressure), new Cell(6, typeof(double)) }, - { nameof(ProcessMapPlanRotorDto.DifferentialPressureLimitMax), new Cell(7, typeof(double)) }, + { nameof(ProcessMapPlanRotorDto.DifferentialPressureMax), new Cell(7, typeof(double)) }, { nameof(ProcessMapPlanRotorDto.WeightOnBit), new Cell(8, typeof(double)) }, - { nameof(ProcessMapPlanRotorDto.WeightOnBitLimitMax), new Cell(9, typeof(double)) }, + { nameof(ProcessMapPlanRotorDto.WeightOnBitMax), new Cell(9, typeof(double)) }, { nameof(ProcessMapPlanRotorDto.TopDriveTorque), new Cell(10, typeof(double)) }, - { nameof(ProcessMapPlanRotorDto.TopDriveTorqueLimit), new Cell(11, typeof(double)) }, - { nameof(ProcessMapPlanRotorDto.RevolutionsPerMinute), new Cell(12, typeof(double)) }, - { nameof(ProcessMapPlanRotorDto.RevolutionsPerMinuteLimitMax), new Cell(13, typeof(double)) }, + { nameof(ProcessMapPlanRotorDto.TopDriveTorqueMax), new Cell(11, typeof(double)) }, + { nameof(ProcessMapPlanRotorDto.Rpm), new Cell(12, typeof(double)) }, + { nameof(ProcessMapPlanRotorDto.RpmMax), new Cell(13, typeof(double)) }, { nameof(ProcessMapPlanRotorDto.FlowRate), new Cell(14, typeof(double)) }, - { nameof(ProcessMapPlanRotorDto.FlowRateLimitMax), new Cell(15, typeof(double)) }, + { nameof(ProcessMapPlanRotorDto.FlowRateMax), new Cell(15, typeof(double)) }, { nameof(ProcessMapPlanRotorDto.Note), new Cell(16, typeof(double)) }, }; } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanShockTestTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanShockTestTemplate.cs new file mode 100644 index 00000000..0646a377 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanShockTestTemplate.cs @@ -0,0 +1,29 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanShockTestTemplate : ITemplateParameters +{ + public string SheetName => "Запись shock test"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanShockTestTemplate.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanShockTestDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanShockTestDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanShockTestDto.DepthEnd), new Cell(3, typeof(double)) }, + + { nameof(ProcessMapPlanShockTestDto.StickSlip), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanShockTestDto.Whirl), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanShockTestDto.AxialVibrations), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanShockTestDto.CombinedVibrations), new Cell(7, typeof(double)) }, + { nameof(ProcessMapPlanShockTestDto.WeightOnBitMin), new Cell(8, typeof(double)) }, + { nameof(ProcessMapPlanShockTestDto.RpmMin), new Cell(9, typeof(double)) }, + + { nameof(ProcessMapPlanShockTestDto.Note), new Cell(10, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanSlideTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanSlideTemplate.cs index 9d570c54..9a6a8107 100644 --- a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanSlideTemplate.cs +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanSlideTemplate.cs @@ -1,5 +1,5 @@ using System.Collections.Generic; -using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; @@ -16,16 +16,16 @@ public class ProcessMapPlanSlideTemplate : ITemplateParameters { nameof(ProcessMapPlanSlideDto.Section), new Cell(1, typeof(string)) }, { nameof(ProcessMapPlanSlideDto.DepthStart), new Cell(2, typeof(double)) }, { nameof(ProcessMapPlanSlideDto.DepthEnd), new Cell(3, typeof(double)) }, - { nameof(ProcessMapPlanSlideDto.RopLimitMax), new Cell(4, typeof(double)) }, - { nameof(ProcessMapPlanSlideDto.PressureLimitMax), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanSlideDto.RopMax), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanSlideDto.PressureMax), new Cell(5, typeof(double)) }, { nameof(ProcessMapPlanSlideDto.DifferentialPressure), new Cell(6, typeof(double)) }, - { nameof(ProcessMapPlanSlideDto.DifferentialPressureLimitMax), new Cell(7, typeof(double)) }, + { nameof(ProcessMapPlanSlideDto.DifferentialPressureMax), new Cell(7, typeof(double)) }, { nameof(ProcessMapPlanSlideDto.WeightOnBit), new Cell(8, typeof(double)) }, - { nameof(ProcessMapPlanSlideDto.WeightOnBitLimitMax), new Cell(9, typeof(double)) }, + { nameof(ProcessMapPlanSlideDto.WeightOnBitMax), new Cell(9, typeof(double)) }, { nameof(ProcessMapPlanSlideDto.FlowRate), new Cell(10, typeof(double)) }, - { nameof(ProcessMapPlanSlideDto.FlowRateLimitMax), new Cell(11, typeof(double)) }, + { nameof(ProcessMapPlanSlideDto.FlowRateMax), new Cell(11, typeof(double)) }, { nameof(ProcessMapPlanSlideDto.Spring), new Cell(12, typeof(double)) }, - { nameof(ProcessMapPlanSlideDto.ToolBuckling), new Cell(13, typeof(double)) }, + { nameof(ProcessMapPlanSlideDto.Buckling), new Cell(13, typeof(double)) }, { nameof(ProcessMapPlanSlideDto.Note), new Cell(14, typeof(double)) } }; } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanStaticMeasurementOutputTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanStaticMeasurementOutputTemplate.cs new file mode 100644 index 00000000..f62676e7 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanStaticMeasurementOutputTemplate.cs @@ -0,0 +1,24 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanStaticMeasurementOutputTemplate : ITemplateParameters +{ + public string SheetName => "Выход статического замера"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanStaticMeasurementOutputTemplate.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanStaticMeasurementOutputDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanStaticMeasurementOutputDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanStaticMeasurementOutputDto.DepthEnd), new Cell(3, typeof(double)) }, + + { nameof(ProcessMapPlanStaticMeasurementOutputDto.SignalWaitingTime), new Cell(4, typeof(double)) }, + + { nameof(ProcessMapPlanStaticMeasurementOutputDto.Note), new Cell(5, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanSwitchingOffThePumpTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanSwitchingOffThePumpTemplate.cs new file mode 100644 index 00000000..3046ec55 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanSwitchingOffThePumpTemplate.cs @@ -0,0 +1,26 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Data.ProcessMaps.Operations; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanSwitchingOffThePumpTemplate : ITemplateParameters +{ + public string SheetName => "Выключение насоса"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanSwitchingOffThePumpTemplate.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanSwitchingOffThePumpDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanSwitchingOffThePumpDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanSwitchingOffThePumpDto.DepthEnd), new Cell(3, typeof(double)) }, + + { nameof(ProcessMapPlanSwitchingOffThePumpDto.Duration), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanSwitchingOffThePumpDto.ResidualPressureLimit), new Cell(5, typeof(double)) }, + + { nameof(ProcessMapPlanSwitchingOffThePumpDto.Note), new Cell(6, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanSwitchingToTheModeTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanSwitchingToTheModeTemplate.cs new file mode 100644 index 00000000..938f5872 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanSwitchingToTheModeTemplate.cs @@ -0,0 +1,26 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanSwitchingToTheModeTemplate : ITemplateParameters +{ + public string SheetName => "Выход на плановый расход"; + + public int HeaderRowsCount => 3; + + public string FileName => "ProcessMapPlanSwitchingToTheModeTemplate.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanSwitchingToTheModeDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanSwitchingToTheModeDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanSwitchingToTheModeDto.DepthEnd), new Cell(3, typeof(double)) }, + { nameof(ProcessMapPlanSwitchingToTheModeDto.RampTime), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanSwitchingToTheModeDto.FlowRate), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanSwitchingToTheModeDto.PressureMax), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanAntiCrashRotationDto.Note), new Cell(7, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanTFOrientationTemplate.cs b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanTFOrientationTemplate.cs new file mode 100644 index 00000000..c2e0ed90 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ExcelServices/Templates/ProcessMapPlanTemplates/ProcessMapPlanTFOrientationTemplate.cs @@ -0,0 +1,38 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Data.ProcessMaps.Operations; +using System.Collections.Generic; + +namespace AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +public class ProcessMapPlanTFOrientationTemplate : ITemplateParameters +{ + public string SheetName => "Выставление"; + + public int HeaderRowsCount => 2; + + public string FileName => "ProcessMapPlanTFOrientationTemplate.xlsx"; + + public IDictionary Cells => new Dictionary + { + { nameof(ProcessMapPlanTFOrientationDto.Section), new Cell(1, typeof(string)) }, + { nameof(ProcessMapPlanTFOrientationDto.DepthStart), new Cell(2, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.DepthEnd), new Cell(3, typeof(double)) }, + + { nameof(ProcessMapPlanTFOrientationDto.TFSetpoint), new Cell(4, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.Spring), new Cell(5, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.PressureMax), new Cell(6, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.DifferentialPressure), new Cell(7, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.Tight), new Cell(8, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.SlackingOff), new Cell(9, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.TorqueMax), new Cell(10, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.RepetitionsCount), new Cell(11, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.RopUp), new Cell(12, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.RopDown), new Cell(13, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.FlowRateUp), new Cell(14, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.FlowRateDown), new Cell(15, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.Interval), new Cell(16, typeof(double)) }, + { nameof(ProcessMapPlanTFOrientationDto.StopPointOffBottom), new Cell(17, typeof(double)) }, + + { nameof(ProcessMapPlanTFOrientationDto.Note), new Cell(18, typeof(string)) }, + }; +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanAntiCrashRotationExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanAntiCrashRotationExportService.cs new file mode 100644 index 00000000..d87c40e0 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanAntiCrashRotationExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanAntiCrashRotationExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanAntiCrashRotationExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanAntiCrashRotationTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_противоаварийное вращение.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanAutoHoldTFExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanAutoHoldTFExportService.cs new file mode 100644 index 00000000..84567d4f --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanAutoHoldTFExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanAutoHoldTFExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanAutoHoldTFExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanAutoHoldTFTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_автоудержание_tf.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanReamExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanDamperExportService.cs similarity index 60% rename from AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanReamExportService.cs rename to AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanDamperExportService.cs index c6b8495e..9feaf815 100644 --- a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanReamExportService.cs +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanDamperExportService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Functions; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; using AsbCloudApp.Requests.ExportOptions; @@ -10,21 +10,21 @@ using System.Threading.Tasks; namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; -public class ProcessMapPlanReamExportService : ProcessMapPlanExportService +public class ProcessMapPlanDamperExportService : ProcessMapPlanExportService { - protected override ITemplateParameters TemplateParameters => new ProcessMapPlanReamTemplate(); - - public ProcessMapPlanReamExportService( - IChangeLogRepository processMapPlanRepository, + public ProcessMapPlanDamperExportService( + IChangeLogRepository processMapPlanRepository, IWellService wellService) : base(processMapPlanRepository, wellService) { } + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanDamperTemplate(); + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) { var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); - return $"{caption}_РТК_План_проработка.xlsx"; + return $"{caption}_РТК_План_демпфер.xlsx"; } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanDrillTestExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanDrillTestExportService.cs new file mode 100644 index 00000000..6a8a9555 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanDrillTestExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanDrillTestExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanDrillTestExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanDrillTestTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_дрилтест.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanLoadCapacityExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanLoadCapacityExportService.cs new file mode 100644 index 00000000..ae4fa8ac --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanLoadCapacityExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanLoadCapacityExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanLoadCapacityExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanLoadCapacityTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_выработка_нагрузки.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanOscillationAnglesExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanOscillationAnglesExportService.cs new file mode 100644 index 00000000..c70779ff --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanOscillationAnglesExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanOscillationAnglesExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanOscillationAnglesExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanOscillationAnglesTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_определения_углов_осцилляции.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanOscillationExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanOscillationExportService.cs new file mode 100644 index 00000000..a9488a7e --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanOscillationExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanOscillationExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanOscillationExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanOscillationTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_осцилляция.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanPositioningOffTheBottomExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanPositioningOffTheBottomExportService.cs new file mode 100644 index 00000000..1da78da4 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanPositioningOffTheBottomExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanPositioningOffTheBottomExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanPositioningOffTheBottomExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanPositioningOffTheBottomTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_позиционирование_над_забоем.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanReamingRotorExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanReamingRotorExportService.cs new file mode 100644 index 00000000..352e6df0 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanReamingRotorExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanReamingRotorExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanReamingRotorExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanReamingRotorTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_проработка_ротор.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanReamingSlideExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanReamingSlideExportService.cs new file mode 100644 index 00000000..f556cb65 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanReamingSlideExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanReamingSlideExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanReamingSlideExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanReamingSlideTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_проработка_слайд.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanRecordingStaticMeasurementExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanRecordingStaticMeasurementExportService.cs new file mode 100644 index 00000000..5f9471eb --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanRecordingStaticMeasurementExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanRecordingStaticMeasurementExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanRecordingStaticMeasurementExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanRecordingStaticMeasurementTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_запись_статического_замера.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanRotorExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanRotorExportService.cs index ce6560d6..e16620ef 100644 --- a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanRotorExportService.cs +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanRotorExportService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; using AsbCloudApp.Requests.ExportOptions; diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanShockTestExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanShockTestExportService.cs new file mode 100644 index 00000000..6035a610 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanShockTestExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanShockTestExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanShockTestExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanShockTestTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_shock_test.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanSlideExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanSlideExportService.cs index c6c2fdfe..0d263beb 100644 --- a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanSlideExportService.cs +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanSlideExportService.cs @@ -1,4 +1,4 @@ -using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; using AsbCloudApp.Requests.ExportOptions; diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanStaticMeasurementOutputExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanStaticMeasurementOutputExportService.cs new file mode 100644 index 00000000..f41d2a81 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanStaticMeasurementOutputExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanStaticMeasurementOutputExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanStaticMeasurementOutputExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanStaticMeasurementOutputTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_выход_статического_замера.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanSwitchingOffThePumpExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanSwitchingOffThePumpExportService.cs new file mode 100644 index 00000000..e1ae6e19 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanSwitchingOffThePumpExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanSwitchingOffThePumpExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanSwitchingOffThePumpExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanSwitchingOffThePumpTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_выключение_насоса.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanSwitchingToTheModeExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanSwitchingToTheModeExportService.cs new file mode 100644 index 00000000..ba0461fb --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanSwitchingToTheModeExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanSwitchingToTheModeExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanSwitchingToTheModeExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanSwitchingToTheModeTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_выход_на_плановый_расход.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanTFOrientationExportService.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanTFOrientationExportService.cs new file mode 100644 index 00000000..495437c1 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Export/ProcessMapPlanTFOrientationExportService.cs @@ -0,0 +1,30 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Requests.ExportOptions; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; +using System.Threading; +using System.Threading.Tasks; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Export; + +public class ProcessMapPlanTFOrientationExportService : ProcessMapPlanExportService +{ + public ProcessMapPlanTFOrientationExportService( + IChangeLogRepository processMapPlanRepository, + IWellService wellService) + : base(processMapPlanRepository, wellService) + { + } + + protected override ITemplateParameters TemplateParameters { get; } = new ProcessMapPlanTFOrientationTemplate(); + + protected override async Task BuildFileNameAsync(WellRelatedExportRequest options, CancellationToken token) + { + var caption = await wellService.GetWellCaptionByIdAsync(options.IdWell, token); + + return $"{caption}_РТК_План_выставление.xlsx"; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanAntiCrashRotationParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanAntiCrashRotationParser.cs new file mode 100644 index 00000000..007ae2c5 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanAntiCrashRotationParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanAntiCrashRotationParser : ProcessMapPlanParser +{ + public ProcessMapPlanAntiCrashRotationParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanAntiCrashRotationTemplate(); + + protected override ProcessMapPlanAntiCrashRotationDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanAutoHoldTFParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanAutoHoldTFParser.cs new file mode 100644 index 00000000..2c502f33 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanAutoHoldTFParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanAutoHoldTFParser : ProcessMapPlanParser +{ + public ProcessMapPlanAutoHoldTFParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanAutoHoldTFTemplate(); + + protected override ProcessMapPlanAutoHoldTFDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanReamParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanDamperParser.cs similarity index 66% rename from AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanReamParser.cs rename to AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanDamperParser.cs index 7bfaa880..38ac7bad 100644 --- a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanReamParser.cs +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanDamperParser.cs @@ -3,22 +3,23 @@ using System.Collections.Generic; using System.IO; using System.Linq; using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Functions; using AsbCloudApp.Repositories; using AsbCloudInfrastructure.Services.ExcelServices.Templates; using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; -public class ProcessMapPlanReamParser : ProcessMapPlanParser +public class ProcessMapPlanDamperParser : ProcessMapPlanParser { - public ProcessMapPlanReamParser(IWellOperationRepository wellOperationRepository) + public ProcessMapPlanDamperParser(IWellOperationRepository wellOperationRepository) : base(wellOperationRepository) { } - protected override ITemplateParameters TemplateParameters => new ProcessMapPlanReamTemplate(); + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanDamperTemplate(); - protected override ProcessMapPlanReamDto BuildDto(IDictionary row, int rowNumber) + protected override ProcessMapPlanDamperDto BuildDto(IDictionary row, int rowNumber) { var dto = base.BuildDto(row, rowNumber); @@ -28,8 +29,9 @@ public class ProcessMapPlanReamParser : ProcessMapPlanParser +{ + public ProcessMapPlanDrillTestParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanDrillTestTemplate(); + + protected override ProcessMapPlanDrillTestDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanLoadCapacityParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanLoadCapacityParser.cs new file mode 100644 index 00000000..ccd2e8f1 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanLoadCapacityParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanLoadCapacityParser : ProcessMapPlanParser +{ + public ProcessMapPlanLoadCapacityParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanLoadCapacityTemplate(); + + protected override ProcessMapPlanLoadCapacityDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanOscillationAnglesParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanOscillationAnglesParser.cs new file mode 100644 index 00000000..213f4105 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanOscillationAnglesParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanOscillationAnglesParser : ProcessMapPlanParser +{ + public ProcessMapPlanOscillationAnglesParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanOscillationAnglesTemplate(); + + protected override ProcessMapPlanOscillationAnglesDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanOscillationParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanOscillationParser.cs new file mode 100644 index 00000000..3233c825 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanOscillationParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanOscillationParser : ProcessMapPlanParser +{ + public ProcessMapPlanOscillationParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanOscillationTemplate(); + + protected override ProcessMapPlanOscillationDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanPositioningOffTheBottomParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanPositioningOffTheBottomParser.cs new file mode 100644 index 00000000..1d006985 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanPositioningOffTheBottomParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanPositioningOffTheBottomParser : ProcessMapPlanParser +{ + public ProcessMapPlanPositioningOffTheBottomParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanPositioningOffTheBottomTemplate(); + + protected override ProcessMapPlanPositioningOffTheBottomDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanReamingRotorParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanReamingRotorParser.cs new file mode 100644 index 00000000..452daf3a --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanReamingRotorParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanReamingRotorParser : ProcessMapPlanParser +{ + public ProcessMapPlanReamingRotorParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanReamingRotorTemplate(); + + protected override ProcessMapPlanReamingRotorDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanReamingSlideParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanReamingSlideParser.cs new file mode 100644 index 00000000..c3c61415 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanReamingSlideParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanReamingSlideParser : ProcessMapPlanParser +{ + public ProcessMapPlanReamingSlideParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanReamingSlideTemplate(); + + protected override ProcessMapPlanReamingSlideDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanRecordingStaticMeasurementParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanRecordingStaticMeasurementParser.cs new file mode 100644 index 00000000..a1a0f027 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanRecordingStaticMeasurementParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanRecordingStaticMeasurementParser : ProcessMapPlanParser +{ + public ProcessMapPlanRecordingStaticMeasurementParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanRecordingStaticMeasurementTemplate(); + + protected override ProcessMapPlanRecordingStaticMeasurementDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanRotorParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanRotorParser.cs index 1ce44dc9..cca67fc9 100644 --- a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanRotorParser.cs +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanRotorParser.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; using AsbCloudApp.Repositories; using AsbCloudInfrastructure.Services.ExcelServices.Templates; using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanShockTestParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanShockTestParser.cs new file mode 100644 index 00000000..b1494be4 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanShockTestParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanShockTestParser : ProcessMapPlanParser +{ + public ProcessMapPlanShockTestParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanShockTestTemplate(); + + protected override ProcessMapPlanShockTestDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanSlideParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanSlideParser.cs index 296070f3..a10c1652 100644 --- a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanSlideParser.cs +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanSlideParser.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; using AsbCloudApp.Repositories; using AsbCloudInfrastructure.Services.ExcelServices.Templates; using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanStaticMeasurementOutputParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanStaticMeasurementOutputParser.cs new file mode 100644 index 00000000..61de9970 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanStaticMeasurementOutputParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanStaticMeasurementOutputParser : ProcessMapPlanParser +{ + public ProcessMapPlanStaticMeasurementOutputParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanStaticMeasurementOutputTemplate(); + + protected override ProcessMapPlanStaticMeasurementOutputDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanSwitchingOffThePumpParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanSwitchingOffThePumpParser.cs new file mode 100644 index 00000000..1ae5abf0 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanSwitchingOffThePumpParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanSwitchingOffThePumpParser : ProcessMapPlanParser +{ + public ProcessMapPlanSwitchingOffThePumpParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanSwitchingOffThePumpTemplate(); + + protected override ProcessMapPlanSwitchingOffThePumpDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanSwitchingToTheModeParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanSwitchingToTheModeParser.cs new file mode 100644 index 00000000..76990a07 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanSwitchingToTheModeParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanSwitchingToTheModeParser : ProcessMapPlanParser +{ + public ProcessMapPlanSwitchingToTheModeParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanSwitchingToTheModeTemplate(); + + protected override ProcessMapPlanSwitchingToTheModeDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanTFOrientationParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanTFOrientationParser.cs new file mode 100644 index 00000000..8358ce19 --- /dev/null +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanTFOrientationParser.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudInfrastructure.Services.ExcelServices.Templates; +using AsbCloudInfrastructure.Services.ExcelServices.Templates.ProcessMapPlanTemplates; + +namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +public class ProcessMapPlanTFOrientationParser : ProcessMapPlanParser +{ + public ProcessMapPlanTFOrientationParser(IWellOperationRepository wellOperationRepository) + : base(wellOperationRepository) + { + } + + protected override ITemplateParameters TemplateParameters => new ProcessMapPlanTFOrientationTemplate(); + + protected override ProcessMapPlanTFOrientationDto BuildDto(IDictionary row, int rowNumber) + { + var dto = base.BuildDto(row, rowNumber); + + var section = sections.FirstOrDefault(s => + string.Equals(s.Caption.Trim(), dto.Section?.Trim(), StringComparison.CurrentCultureIgnoreCase)); + + if (section is null) + { + var message = string.Format(XLExtentions.ProblemDetailsTemplate, + TemplateParameters.SheetName, + rowNumber, + TemplateParameters.Cells[nameof(ProcessMapPlanBaseDto.Section)], + "Указана некорректная секция"); + throw new FileFormatException(message); + } + + dto.IdWellSectionType = section.Id; + + return dto; + } +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanAntiCrashRotationTemplate.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanAntiCrashRotationTemplate.xlsx new file mode 100644 index 00000000..46c7efc9 Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanAntiCrashRotationTemplate.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanAutoHoldTFTemplate.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanAutoHoldTFTemplate.xlsx new file mode 100644 index 00000000..9be509e7 Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanAutoHoldTFTemplate.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanDamperTemplate.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanDamperTemplate.xlsx new file mode 100644 index 00000000..3e42d6bf Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanDamperTemplate.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanDrillTestTemplate.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanDrillTestTemplate.xlsx new file mode 100644 index 00000000..0b974d53 Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanDrillTestTemplate.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanLoadCapacityTemplate.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanLoadCapacityTemplate.xlsx new file mode 100644 index 00000000..a65d1ead Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanLoadCapacityTemplate.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanOscillationAnglesTemplate.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanOscillationAnglesTemplate.xlsx new file mode 100644 index 00000000..17e49105 Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanOscillationAnglesTemplate.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanOscillationTemplate.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanOscillationTemplate.xlsx new file mode 100644 index 00000000..d82c0ba3 Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanOscillationTemplate.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanPositioningOffTheBottomTemplate.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanPositioningOffTheBottomTemplate.xlsx new file mode 100644 index 00000000..f4a9007f Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanPositioningOffTheBottomTemplate.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanReamTemplate.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanReamTemplate.xlsx deleted file mode 100644 index 5f5be35b..00000000 Binary files a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanReamTemplate.xlsx and /dev/null differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanReamingRotorTemplate.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanReamingRotorTemplate.xlsx new file mode 100644 index 00000000..fc024d7e Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanReamingRotorTemplate.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanReamingSlideTemplate.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanReamingSlideTemplate.xlsx new file mode 100644 index 00000000..58fb5e28 Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanReamingSlideTemplate.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanRecordingStaticMeasurementTemplate.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanRecordingStaticMeasurementTemplate.xlsx new file mode 100644 index 00000000..f032611f Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanRecordingStaticMeasurementTemplate.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanRotorTemplate.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanRotorTemplate.xlsx index 97e15351..f29467de 100644 Binary files a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanRotorTemplate.xlsx and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanRotorTemplate.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanShockTestTemplate.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanShockTestTemplate.xlsx new file mode 100644 index 00000000..ef8c4e06 Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanShockTestTemplate.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanSlideTemplate.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanSlideTemplate.xlsx index f91bf0f7..fd82d004 100644 Binary files a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanSlideTemplate.xlsx and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanSlideTemplate.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanStaticMeasurementOutputTemplate.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanStaticMeasurementOutputTemplate.xlsx new file mode 100644 index 00000000..c3ea29f7 Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanStaticMeasurementOutputTemplate.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanSwitchingOffThePumpTemplate.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanSwitchingOffThePumpTemplate.xlsx new file mode 100644 index 00000000..e20e59b4 Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanSwitchingOffThePumpTemplate.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanSwitchingToTheModeTemplate.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanSwitchingToTheModeTemplate.xlsx new file mode 100644 index 00000000..7c5f8671 Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanSwitchingToTheModeTemplate.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanTFOrientationTemplate.xlsx b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanTFOrientationTemplate.xlsx new file mode 100644 index 00000000..cf3a6a50 Binary files /dev/null and b/AsbCloudInfrastructure/Services/ProcessMapPlan/Templates/ProcessMapPlanTFOrientationTemplate.xlsx differ diff --git a/AsbCloudInfrastructure/Services/ProcessMaps/Report/ProcessMapReportDrillingService.cs b/AsbCloudInfrastructure/Services/ProcessMaps/Report/ProcessMapReportDrillingService.cs index 4a0e6c89..f6e2e8ab 100644 --- a/AsbCloudInfrastructure/Services/ProcessMaps/Report/ProcessMapReportDrillingService.cs +++ b/AsbCloudInfrastructure/Services/ProcessMaps/Report/ProcessMapReportDrillingService.cs @@ -1,5 +1,6 @@ using AsbCloudApp.Data; using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; using AsbCloudApp.Data.ProcessMaps.Report; using AsbCloudApp.Data.WellOperation; using AsbCloudApp.Exceptions; @@ -273,27 +274,27 @@ public class ProcessMapReportDrillingService : IProcessMapReportDrillingService if(processMapPlanFilteredByDepth is ProcessMapPlanRotorDto processMapPlanRotorFilteredByDepth) { result.PressureDiff.SetpointPlan = processMapPlanRotorFilteredByDepth.DifferentialPressure; - result.PressureDiff.Limit = processMapPlanRotorFilteredByDepth.DifferentialPressureLimitMax; + result.PressureDiff.Limit = processMapPlanRotorFilteredByDepth.DifferentialPressureMax; result.AxialLoad.SetpointPlan = processMapPlanRotorFilteredByDepth.WeightOnBit; - result.AxialLoad.Limit = processMapPlanRotorFilteredByDepth.WeightOnBitLimitMax; + result.AxialLoad.Limit = processMapPlanRotorFilteredByDepth.WeightOnBitMax; result.TopDriveTorque.SetpointPlan = processMapPlanRotorFilteredByDepth.TopDriveTorque; - result.TopDriveTorque.Limit = processMapPlanRotorFilteredByDepth.TopDriveTorqueLimit; - result.SpeedLimit.SetpointPlan = processMapPlanRotorFilteredByDepth.RopLimitMax; - result.TopDriveSpeed.SetpointPlan = processMapPlanRotorFilteredByDepth.RevolutionsPerMinute; + result.TopDriveTorque.Limit = processMapPlanRotorFilteredByDepth.TopDriveTorqueMax; + result.SpeedLimit.SetpointPlan = processMapPlanRotorFilteredByDepth.RopMax; + result.TopDriveSpeed.SetpointPlan = processMapPlanRotorFilteredByDepth.Rpm; result.Flow.SetpointPlan = processMapPlanRotorFilteredByDepth.FlowRate; - result.Flow.Limit = processMapPlanRotorFilteredByDepth.FlowRateLimitMax; - result.Rop.Plan = processMapPlanRotorFilteredByDepth.RopLimitMax; + result.Flow.Limit = processMapPlanRotorFilteredByDepth.FlowRateMax; + result.Rop.Plan = processMapPlanRotorFilteredByDepth.RopMax; } if (processMapPlanFilteredByDepth is ProcessMapPlanSlideDto processMapPlanSlideFilteredByDepth) { result.PressureDiff.SetpointPlan = processMapPlanSlideFilteredByDepth.DifferentialPressure; - result.PressureDiff.Limit = processMapPlanSlideFilteredByDepth.DifferentialPressureLimitMax; + result.PressureDiff.Limit = processMapPlanSlideFilteredByDepth.DifferentialPressureMax; result.AxialLoad.SetpointPlan = processMapPlanSlideFilteredByDepth.WeightOnBit; - result.AxialLoad.Limit = processMapPlanSlideFilteredByDepth.WeightOnBitLimitMax; - result.SpeedLimit.SetpointPlan = processMapPlanSlideFilteredByDepth.RopLimitMax; + result.AxialLoad.Limit = processMapPlanSlideFilteredByDepth.WeightOnBitMax; + result.SpeedLimit.SetpointPlan = processMapPlanSlideFilteredByDepth.RopMax; result.Flow.SetpointPlan = processMapPlanSlideFilteredByDepth.FlowRate; - result.Flow.Limit = processMapPlanSlideFilteredByDepth.FlowRateLimitMax; - result.Rop.Plan = processMapPlanSlideFilteredByDepth.RopLimitMax; + result.Flow.Limit = processMapPlanSlideFilteredByDepth.FlowRateMax; + result.Rop.Plan = processMapPlanSlideFilteredByDepth.RopMax; } return result; diff --git a/AsbCloudInfrastructure/Services/WellInfoService.cs b/AsbCloudInfrastructure/Services/WellInfoService.cs index b1a635a3..1db7a2a1 100644 --- a/AsbCloudInfrastructure/Services/WellInfoService.cs +++ b/AsbCloudInfrastructure/Services/WellInfoService.cs @@ -1,5 +1,6 @@ using AsbCloudApp.Data; using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; using AsbCloudApp.Data.SAUB; using AsbCloudApp.Data.WITS; using AsbCloudApp.IntegrationEvents; @@ -171,13 +172,13 @@ public class WellInfoService { wellMapInfo.AxialLoad.Plan = processMapPlanRotor?.WeightOnBit; - wellMapInfo.TopDriveSpeed.Plan = processMapPlanRotor?.RevolutionsPerMinute; + wellMapInfo.TopDriveSpeed.Plan = processMapPlanRotor?.Rpm; wellMapInfo.TopDriveTorque.Plan = processMapPlanRotor?.TopDriveTorque; wellMapInfo.Pressure.Plan = processMapPlanRotor?.DifferentialPressure; - wellMapInfo.ROP.Plan = processMapPlanRotor?.RopLimitMax; + wellMapInfo.ROP.Plan = processMapPlanRotor?.RopMax; } if (processMapPlanWellDrilling is ProcessMapPlanSlideDto processMapPlanSlide) @@ -186,7 +187,7 @@ public class WellInfoService wellMapInfo.Pressure.Plan = processMapPlanSlide?.DifferentialPressure; - wellMapInfo.ROP.Plan = processMapPlanSlide?.RopLimitMax; + wellMapInfo.ROP.Plan = processMapPlanSlide?.RopMax; } var wellSubsystemStat = subsystemStat.FirstOrDefault(s => s.Well.Id == well.Id); diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanAntiCrashRotationControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanAntiCrashRotationControllerTest.cs new file mode 100644 index 00000000..b2b72f9a --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanAntiCrashRotationControllerTest.cs @@ -0,0 +1,68 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudWebApi.IntegrationTests; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; +using Xunit; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Functions; + +/// +/// РТК план противоаварийное вращение +/// +public class ProcessMapPlanAntiCrashRotationControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanAntiCrashRotationControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanAntiCrashRotation") + { + } + private readonly ProcessMapPlanAntiCrashRotationDto dto = new ProcessMapPlanAntiCrashRotationDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + Note = "1", + TopDriveRpmMin = 1, + TopDriveStartMinFlowRate = 1, + TopDriveTorqueMax = 1, + }; + + private readonly ProcessMapPlanAntiCrashRotation entity = new ProcessMapPlanAntiCrashRotation() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + Note = "1", + TopDriveRpmMin = 1, + TopDriveStartMinFlowRate = 1, + TopDriveTorqueMax = 1 + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanAntiCrashRotation GetByNote(DbSet dbSet, ProcessMapPlanAntiCrashRotationDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanAntiCrashRotationDto GetByNote(IEnumerable dtos, ProcessMapPlanAntiCrashRotationDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanAntiCrashRotation? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanAutoHoldTFControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanAutoHoldTFControllerTest.cs new file mode 100644 index 00000000..5ed9a6a9 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanAutoHoldTFControllerTest.cs @@ -0,0 +1,69 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; +using Xunit; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Functions; + +/// +/// РТК план автоудержание +/// +public class ProcessMapPlanAutoHoldTFControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanAutoHoldTFControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanAutoHoldTF") + { + } + private readonly ProcessMapPlanAutoHoldTFDto dto = new ProcessMapPlanAutoHoldTFDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + Note = "1", + ZenithAngle = 2, + }; + + private readonly ProcessMapPlanAutoHoldTF entity = new ProcessMapPlanAutoHoldTF() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + Note = "1", + ZenithAngle = 2, + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanAutoHoldTF GetByNote(DbSet dbSet, ProcessMapPlanAutoHoldTFDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanAutoHoldTFDto GetByNote(IEnumerable dtos, ProcessMapPlanAutoHoldTFDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanAutoHoldTF? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanDamperControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanDamperControllerTest.cs new file mode 100644 index 00000000..fb174196 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanDamperControllerTest.cs @@ -0,0 +1,69 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudApp.Data.ProcessMaps.Functions; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Functions; + +/// +/// РТК план демпфер +/// +public class ProcessMapPlanDamperControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanDamperControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanDamper") + { + } + private readonly ProcessMapPlanDamperDto dto = new ProcessMapPlanDamperDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + Note = "1", + StickSlip = 1, + }; + + private readonly ProcessMapPlanDamper entity = new ProcessMapPlanDamper() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + Note = "1", + StickSlip = 1 + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanDamper GetByNote(DbSet dbSet, ProcessMapPlanDamperDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanDamperDto GetByNote(IEnumerable dtos, ProcessMapPlanDamperDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanDamper? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanDrillTestControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanDrillTestControllerTest.cs new file mode 100644 index 00000000..3d6eb0ff --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanDrillTestControllerTest.cs @@ -0,0 +1,77 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudApp.Data.ProcessMaps.Functions; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Functions; + +/// +/// РТК план дрилтест +/// +public class ProcessMapPlanDrillTestControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanDrillTestControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanDrillTest") + { + } + private readonly ProcessMapPlanDrillTestDto dto = new ProcessMapPlanDrillTestDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + LengthStep = 1, + Note = "1", + WeightOnBitMin = 1, + RpmMin = 1, + RpmStepsCount = 1, + WeightOnBitStepsCount = 1, + }; + + private readonly ProcessMapPlanDrillTest entity = new ProcessMapPlanDrillTest() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + LengthStep = 1, + Note = "1", + WeightOnBitMin = 1, + RpmMin = 1, + RpmStepsCount = 1, + WeightOnBitStepsCount = 1 + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanDrillTest GetByNote(DbSet dbSet, ProcessMapPlanDrillTestDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanDrillTestDto GetByNote(IEnumerable dtos, ProcessMapPlanDrillTestDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanDrillTest? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanOscillationControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanOscillationControllerTest.cs new file mode 100644 index 00000000..860904e1 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanOscillationControllerTest.cs @@ -0,0 +1,79 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudApp.Data.ProcessMaps.Functions; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Functions; + +/// +/// РТК план осцилляция +/// +public class ProcessMapPlanOscillationControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanOscillationControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanOscillation") + { + } + private readonly ProcessMapPlanOscillationDto dto = new ProcessMapPlanOscillationDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + Mode = 1, + Note = "1", + OptimalOscillationAngle = 1, + RpmLeft = 1, + RpmRight = 2, + TorqueMaxLeft = 2, + TorqueMaxRight = 3 + }; + + private readonly ProcessMapPlanOscillation entity = new ProcessMapPlanOscillation() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + Mode = 1, + Note = "1", + OptimalOscillationAngle = 1, + RpmLeft = 1, + RpmRight = 2, + TorqueMaxLeft = 2, + TorqueMaxRight = 3 + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanOscillation GetByNote(DbSet dbSet, ProcessMapPlanOscillationDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanOscillationDto GetByNote(IEnumerable dtos, ProcessMapPlanOscillationDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanOscillation? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanShockTestControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanShockTestControllerTest.cs new file mode 100644 index 00000000..3a0f8994 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanShockTestControllerTest.cs @@ -0,0 +1,79 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudApp.Data.ProcessMaps.Functions; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Functions; + +/// +/// РТК план shock test +/// +public class ProcessMapPlanShockTestControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanShockTestControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanShockTest") + { + } + private readonly ProcessMapPlanShockTestDto dto = new ProcessMapPlanShockTestDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + AxialVibrations = 1, + CombinedVibrations = 2, + Note = "1", + StickSlip = 1, + WeightOnBitMin = 1, + Whirl = 1, + RpmMin = 1, + }; + + private readonly ProcessMapPlanShockTest entity = new ProcessMapPlanShockTest() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + AxialVibrations = 1, + CombinedVibrations = 2, + Note = "1", + StickSlip = 1, + WeightOnBitMin = 1, + Whirl = 1, + RpmMin = 1, + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanShockTest GetByNote(DbSet dbSet, ProcessMapPlanShockTestDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanShockTestDto GetByNote(IEnumerable dtos, ProcessMapPlanShockTestDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanShockTest? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanStaticMeasurementOutputControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanStaticMeasurementOutputControllerTest.cs new file mode 100644 index 00000000..589ab64a --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanStaticMeasurementOutputControllerTest.cs @@ -0,0 +1,69 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudApp.Data.ProcessMaps.Functions; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Functions; + +/// +/// РТК план выход статического замера +/// +public class ProcessMapPlanStaticMeasurementOutputControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanStaticMeasurementOutputControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanStaticMeasurementOutput") + { + } + private readonly ProcessMapPlanStaticMeasurementOutputDto dto = new ProcessMapPlanStaticMeasurementOutputDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + SignalWaitingTime = 1, + Note = "1" + }; + + private readonly ProcessMapPlanStaticMeasurementOutput entity = new ProcessMapPlanStaticMeasurementOutput() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + SignalWaitingTime = 1, + Note = "1" + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanStaticMeasurementOutput GetByNote(DbSet dbSet, ProcessMapPlanStaticMeasurementOutputDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanStaticMeasurementOutputDto GetByNote(IEnumerable dtos, ProcessMapPlanStaticMeasurementOutputDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanStaticMeasurementOutput? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanUpdatingNoloadParametersControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanUpdatingNoloadParametersControllerTest.cs new file mode 100644 index 00000000..5e995aef --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Functions/ProcessMapPlanUpdatingNoloadParametersControllerTest.cs @@ -0,0 +1,69 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudApp.Data.ProcessMaps.Functions; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Functions; + +/// +/// РТК план обновление холостого хода +/// +public class ProcessMapPlanUpdatingNoloadParametersControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanUpdatingNoloadParametersControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanUpdatingNoloadParameters") + { + } + private readonly ProcessMapPlanUpdatingNoloadParametersDto dto = new ProcessMapPlanUpdatingNoloadParametersDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + IdDeclineSocketColumn = true, + Note = "1", + }; + + private readonly ProcessMapPlanUpdatingNoloadParameters entity = new ProcessMapPlanUpdatingNoloadParameters() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + IdDeclineSocketColumn = true, + Note = "1" + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanUpdatingNoloadParameters GetByNote(DbSet dbSet, ProcessMapPlanUpdatingNoloadParametersDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanUpdatingNoloadParametersDto GetByNote(IEnumerable dtos, ProcessMapPlanUpdatingNoloadParametersDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanUpdatingNoloadParameters? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanLoadCapacityControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanLoadCapacityControllerTest.cs new file mode 100644 index 00000000..fede306e --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanLoadCapacityControllerTest.cs @@ -0,0 +1,73 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudApp.Data.ProcessMaps.Operations; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Operations; + +/// +/// РТК план выработка нагрузки +/// +public class ProcessMapPlanLoadCapacityControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanLoadCapacityControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanLoadCapacity") + { + } + private readonly ProcessMapPlanLoadCapacityDto dto = new ProcessMapPlanLoadCapacityDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + DifferentialPressureMin = 1, + Note = "2", + TimeLoadCapacityMin = 2, + WeightOnBitMin = 3, + }; + + private readonly ProcessMapPlanLoadCapacity entity = new ProcessMapPlanLoadCapacity() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + DifferentialPressureMin = 1, + Note = "2", + TimeLoadCapacityMin = 2, + WeightOnBitMin = 3, + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanLoadCapacity GetByNote(DbSet dbSet, ProcessMapPlanLoadCapacityDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanLoadCapacityDto GetByNote(IEnumerable dtos, ProcessMapPlanLoadCapacityDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanLoadCapacity? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanOscillationAnglesControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanOscillationAnglesControllerTest.cs new file mode 100644 index 00000000..3cbb7cb7 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanOscillationAnglesControllerTest.cs @@ -0,0 +1,75 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudApp.Data.ProcessMaps.Operations; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Operations; + +/// +/// РТК план определения углов осцилляции +/// +public class ProcessMapPlanOscillationAnglesControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanOscillationAnglesControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanOscillationAngles") + { + } + private readonly ProcessMapPlanOscillationAnglesDto dto = new ProcessMapPlanOscillationAnglesDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + Note = "1", + Rpm = 1, + RpmMax = 2, + TopDriveTorque = 2, + TopDriveTorqueMax = 3, + }; + + private readonly ProcessMapPlanOscillationAngles entity = new ProcessMapPlanOscillationAngles() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + Note = "1", + Rpm = 1, + RpmMax = 2, + TopDriveTorque = 2, + TopDriveTorqueMax = 3, + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanOscillationAngles GetByNote(DbSet dbSet, ProcessMapPlanOscillationAnglesDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanOscillationAnglesDto GetByNote(IEnumerable dtos, ProcessMapPlanOscillationAnglesDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanOscillationAngles? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanPositioningOffTheBottomControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanPositioningOffTheBottomControllerTest.cs new file mode 100644 index 00000000..c2df1072 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanPositioningOffTheBottomControllerTest.cs @@ -0,0 +1,91 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudApp.Data.ProcessMaps.Operations; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Operations; + +/// +/// РТК план позиционирование над забоем +/// +public class ProcessMapPlanPositioningOffTheBottomControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanPositioningOffTheBottomControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanPositioningOffTheBottom") + { + } + private readonly ProcessMapPlanPositioningOffTheBottomDto dto = new ProcessMapPlanPositioningOffTheBottomDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + StopOffTheBottom = 1, + DifferentialPressure = 1, + FlowRateDown = 1, + FlowRateUp = 1, + Note = "1", + RopDown = 1, + RopUp = 1, + PressureMax = 1, + RpmDown = 1, + RpmUp = 1, + SlackingOff = 1, + Tight = 1, + TorqueMax = 1 + }; + + private readonly ProcessMapPlanPositioningOffTheBottom entity = new ProcessMapPlanPositioningOffTheBottom() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + StopOffTheBottom = 1, + DifferentialPressure = 1, + FlowRateDown = 1, + FlowRateUp = 1, + Note = "1", + RopDown = 1, + RopUp = 1, + PressureMax = 1, + RpmDown = 1, + RpmUp = 1, + SlackingOff = 1, + Tight = 1, + TorqueMax = 1 + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanPositioningOffTheBottom GetByNote(DbSet dbSet, ProcessMapPlanPositioningOffTheBottomDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanPositioningOffTheBottomDto GetByNote(IEnumerable dtos, ProcessMapPlanPositioningOffTheBottomDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanPositioningOffTheBottom? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanReamingRotorControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanReamingRotorControllerTest.cs new file mode 100644 index 00000000..c2f884ca --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanReamingRotorControllerTest.cs @@ -0,0 +1,131 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudApp.Data.ProcessMaps.Operations; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Operations; + +/// +/// РТК план проработка для ротора +/// +public class ProcessMapPlanReamingRotorControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanReamingRotorControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanReamingRotor") + { + } + private readonly ProcessMapPlanReamingRotorDto dto = new ProcessMapPlanReamingRotorDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + DifferentialPressure = 2, + Note = "5", + Reaming1FlowRateDown = 7, + Reaming2FlowRateDown = 8, + Reaming3FlowRateDown = 9, + Reaming1FlowRateUp = 10, + Reaming1Interval = 11, + Reaming2Interval = 12, + Reaming1StopPointOffBottom = 3, + Reaming2FlowRateUp = 4, + Reaming3FlowRateUp = 5, + Reaming2StopPointOffBottom = 1, + Reaming3Interval = 2, + Reaming3StopPointOffBottom = 4, + Reaming3RopDown = 5, + TorqueMax = 6, + Tight = 6, + SlackingOff = 7, + PressureMax = 8, + Reaming1RepetitionsCount = 9, + Reaming1RopDown = 10, + Reaming1RopUp = 11, + Reaming1RpmDown = 12, + Reaming1RpmUp = 13, + Reaming2RpmDown = 14, + Reaming2RepetitionsCount = 15, + Reaming2RopDown = 16, + Reaming2RopUp = 17, + Reaming3RpmDown = 18, + Reaming3RpmUp = 19, + Reaming2RpmUp = 20, + Reaming3RepetitionsCount = 20, + Reaming3RopUp = 21, + }; + + private readonly ProcessMapPlanReamingRotor entity = new ProcessMapPlanReamingRotor() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + DifferentialPressure = 2, + Note = "5", + Reaming1FlowRateDown = 7, + Reaming2FlowRateDown = 8, + Reaming3FlowRateDown = 9, + Reaming1FlowRateUp = 10, + Reaming1Interval = 11, + Reaming2Interval = 12, + Reaming1StopPointOffBottom = 3, + Reaming2FlowRateUp = 4, + Reaming3FlowRateUp = 5, + Reaming2StopPointOffBottom = 1, + Reaming3Interval = 2, + Reaming3StopPointOffBottom = 4, + Reaming3RopDown = 5, + TorqueMax = 6, + Tight = 6, + SlackingOff = 7, + PressureMax = 8, + Reaming1RepetitionsCount = 9, + Reaming1RopDown = 10, + Reaming1RopUp = 11, + Reaming1RpmDown = 12, + Reaming1RpmUp = 13, + Reaming2RpmDown = 14, + Reaming2RepetitionsCount = 15, + Reaming2RopDown = 16, + Reaming2RopUp = 17, + Reaming3RpmDown = 18, + Reaming3RpmUp = 19, + Reaming2RpmUp = 20, + Reaming3RepetitionsCount = 20, + Reaming3RopUp = 21, + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanReamingRotor GetByNote(DbSet dbSet, ProcessMapPlanReamingRotorDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanReamingRotorDto GetByNote(IEnumerable dtos, ProcessMapPlanReamingRotorDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanReamingRotor? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanReamingSlideControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanReamingSlideControllerTest.cs new file mode 100644 index 00000000..d9ab7862 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanReamingSlideControllerTest.cs @@ -0,0 +1,131 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudApp.Data.ProcessMaps.Operations; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Operations; + +/// +/// РТК план проработка для слайда +/// +public class ProcessMapPlanReamingSlideControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanReamingSlideControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanReamingSlide") + { + } + private readonly ProcessMapPlanReamingSlideDto dto = new ProcessMapPlanReamingSlideDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + SlackingOff = 1, + Reaming3StopPointOffBottom = 2, + Reaming3RopUp = 3, + Reaming3Interval = 4, + Reaming2StopPointOffBottom = 5, + Reaming2RopUp = 6, + Reaming2RepetitionsCount = 7, + Reaming3FlowRateUp = 8, + Reaming2FlowRateUp = 9, + Reaming1StopPointOffBottom = 1, + Reaming1RopUp = 1, + Reaming1Interval = 2, + DifferentialPressure = 3, + PressureMax = 4, + TorqueMax = 5, + Note = "1", + Reaming1FlowRateDown = 6, + Reaming1FlowRateUp = 7, + Reaming1RepetitionsCount = 8, + Reaming1RopDown = 9, + Reaming1RpmDown = 1, + Reaming1RpmUp = 1, + Reaming2FlowRateDown = 2, + Reaming2Interval = 3, + Reaming2RopDown = 3, + Reaming2RpmDown = 4, + Reaming2RpmUp = 5, + Reaming3FlowRateDown = 6, + Reaming3RepetitionsCount = 3, + Reaming3RopDown = 4, + Reaming3RpmDown = 5, + Reaming3RpmUp = 6, + Tight = 1, + }; + + private readonly ProcessMapPlanReamingSlide entity = new ProcessMapPlanReamingSlide() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + SlackingOff = 1, + Reaming3StopPointOffBottom = 2, + Reaming3RopUp = 3, + Reaming3Interval = 4, + Reaming2StopPointOffBottom = 5, + Reaming2RopUp = 6, + Reaming2RepetitionsCount = 7, + Reaming3FlowRateUp = 8, + Reaming2FlowRateUp = 9, + Reaming1StopPointOffBottom = 1, + Reaming1RopUp = 1, + Reaming1Interval = 2, + DifferentialPressure = 3, + PressureMax = 4, + TorqueMax = 5, + Note = "1", + Reaming1FlowRateDown = 6, + Reaming1FlowRateUp = 7, + Reaming1RepetitionsCount = 8, + Reaming1RopDown = 9, + Reaming1RpmDown = 1, + Reaming1RpmUp = 1, + Reaming2FlowRateDown = 2, + Reaming2Interval = 3, + Reaming2RopDown = 3, + Reaming2RpmDown = 4, + Reaming2RpmUp = 5, + Reaming3FlowRateDown = 6, + Reaming3RepetitionsCount = 3, + Reaming3RopDown = 4, + Reaming3RpmDown = 5, + Reaming3RpmUp = 6, + Tight = 1, + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanReamingSlide GetByNote(DbSet dbSet, ProcessMapPlanReamingSlideDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanReamingSlideDto GetByNote(IEnumerable dtos, ProcessMapPlanReamingSlideDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanReamingSlide? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanRecordingStaticMeasurementControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanRecordingStaticMeasurementControllerTest.cs new file mode 100644 index 00000000..b8f59b6f --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanRecordingStaticMeasurementControllerTest.cs @@ -0,0 +1,69 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudApp.Data.ProcessMaps.Operations; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Operations; + +/// +/// РТК план записи статического замера +/// +public class ProcessMapPlanRecordingStaticMeasurementControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanRecordingStaticMeasurementControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanRecordingStaticMeasurement") + { + } + private readonly ProcessMapPlanRecordingStaticMeasurementDto dto = new ProcessMapPlanRecordingStaticMeasurementDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + MeasurementRecordingTime = 1, + Note = "1" + }; + + private readonly ProcessMapPlanRecordingStaticMeasurement entity = new ProcessMapPlanRecordingStaticMeasurement() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + MeasurementRecordingTime = 1, + Note = "1" + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanRecordingStaticMeasurement GetByNote(DbSet dbSet, ProcessMapPlanRecordingStaticMeasurementDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanRecordingStaticMeasurementDto GetByNote(IEnumerable dtos, ProcessMapPlanRecordingStaticMeasurementDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanRecordingStaticMeasurement? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/ProcessMapPlanRotorControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanRotorControllerTest.cs similarity index 76% rename from AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/ProcessMapPlanRotorControllerTest.cs rename to AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanRotorControllerTest.cs index 7c2ed101..57e80efc 100644 --- a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/ProcessMapPlanRotorControllerTest.cs +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanRotorControllerTest.cs @@ -1,30 +1,30 @@ -using AsbCloudApp.Data.ProcessMaps; -using AsbCloudDb.Model.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudDb.Model.ProcessMapPlan.Operations; using DocumentFormat.OpenXml.Drawing.Charts; using Mapster; using Microsoft.EntityFrameworkCore; using Xunit; -namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; -public class ProcessMapPlanRotorControllerTest : ProcessMapPlanBaseControllerTest +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Operations; +public class ProcessMapPlanRotorControllerTest : ProcessMapPlanBaseControllerTest { private readonly ProcessMapPlanRotorDto dto = new ProcessMapPlanRotorDto() { IdWell = 1, DepthStart = 1, DepthEnd = 2, - RopLimitMax = 3, - PressureLimitMax = 4, + RopMax = 3, + PressureMax = 4, DifferentialPressure = 5, - DifferentialPressureLimitMax = 6, + DifferentialPressureMax = 6, WeightOnBit = 7, - WeightOnBitLimitMax = 8, + WeightOnBitMax = 8, TopDriveTorque = 9, - TopDriveTorqueLimit = 10, - RevolutionsPerMinute = 11, - RevolutionsPerMinuteLimitMax = 12, + TopDriveTorqueMax = 10, + Rpm = 11, + RpmMax = 12, FlowRate = 13, - FlowRateLimitMax = 14, + FlowRateMax = 14, Note = "15", Id = 0, IdWellSectionType = 1, @@ -36,20 +36,20 @@ public class ProcessMapPlanRotorControllerTest : ProcessMapPlanBaseControllerTes DepthEnd = 10, DepthStart = 2, DifferentialPressure = 3, - DifferentialPressureLimitMax = 4, + DifferentialPressureMax = 4, FlowRate = 5, - FlowRateLimitMax = 6, + FlowRateMax = 6, Id = 0, IdWellSectionType = 1, Note = "1", - PressureLimitMax = 2, - RevolutionsPerMinute = 3, - RevolutionsPerMinuteLimitMax = 4, - RopLimitMax = 5, + PressureMax = 2, + Rpm = 3, + RpmMax = 4, + RopMax = 5, TopDriveTorque = 6, - TopDriveTorqueLimit = 7, + TopDriveTorqueMax = 7, WeightOnBit = 8, - WeightOnBitLimitMax = 9, + WeightOnBitMax = 9, IdAuthor = 1, IdEditor = 1, Creation = DateTimeOffset.UtcNow @@ -65,7 +65,7 @@ public class ProcessMapPlanRotorControllerTest : ProcessMapPlanBaseControllerTes var entity = dbContext .Set() .Where(p => p.WeightOnBit == dto.WeightOnBit) - .Where(p => p.WeightOnBitLimitMax == dto.WeightOnBitLimitMax) + .Where(p => p.WeightOnBitMax == dto.WeightOnBitMax) .Where(p => p.Note == dto.Note) .FirstOrDefault(p => p.IdWell == dto.IdWell); @@ -120,36 +120,36 @@ public class ProcessMapPlanRotorControllerTest : ProcessMapPlanBaseControllerTes var dtoUpdate = dto.Adapt(); dtoUpdate.IdWell = 0; dtoUpdate.Note = "nebuchadnezzar"; - dtoUpdate.DifferentialPressureLimitMax++; + dtoUpdate.DifferentialPressureMax++; dtoUpdate.DifferentialPressure++; dtoUpdate.FlowRate++; - dtoUpdate.FlowRateLimitMax++; - dtoUpdate.RopLimitMax++; + dtoUpdate.FlowRateMax++; + dtoUpdate.RopMax++; dtoUpdate.WeightOnBit++; - dtoUpdate.WeightOnBitLimitMax++; + dtoUpdate.WeightOnBitMax++; dtoUpdate.DepthStart++; dtoUpdate.DepthEnd++; - dtoUpdate.RevolutionsPerMinute++; - dtoUpdate.RevolutionsPerMinuteLimitMax++; + dtoUpdate.Rpm++; + dtoUpdate.RpmMax++; dtoUpdate.TopDriveTorque++; - dtoUpdate.TopDriveTorqueLimit++; + dtoUpdate.TopDriveTorqueMax++; var dtoInsert = dtoUpdate.Adapt(); dtoInsert.Id = 0; dtoInsert.Note = "nebuchad"; - dtoInsert.DifferentialPressureLimitMax++; + dtoInsert.DifferentialPressureMax++; dtoInsert.DifferentialPressure++; dtoInsert.FlowRate++; - dtoInsert.FlowRateLimitMax++; - dtoInsert.RopLimitMax++; + dtoInsert.FlowRateMax++; + dtoInsert.RopMax++; dtoInsert.WeightOnBit++; - dtoInsert.WeightOnBitLimitMax++; + dtoInsert.WeightOnBitMax++; dtoInsert.DepthStart++; dtoInsert.DepthEnd++; - dtoInsert.RevolutionsPerMinute++; - dtoInsert.RevolutionsPerMinuteLimitMax++; + dtoInsert.Rpm++; + dtoInsert.RpmMax++; dtoInsert.TopDriveTorque++; - dtoInsert.TopDriveTorqueLimit++; + dtoInsert.TopDriveTorqueMax++; await UpdateOrInsertRange(entity, dtoUpdate, dtoInsert); } diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanRotorRpmAccelerationControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanRotorRpmAccelerationControllerTest.cs new file mode 100644 index 00000000..35fc0cf5 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanRotorRpmAccelerationControllerTest.cs @@ -0,0 +1,68 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using Microsoft.EntityFrameworkCore; +using Xunit; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Operations; + +/// +/// РТК план встряхивание бурового инструмента +/// +public class ProcessMapPlanRotorRpmAccelerationControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanRotorRpmAccelerationControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanRotorRpmAcceleration") + { + } + private readonly ProcessMapPlanRotorRpmAccelerationDto dto = new ProcessMapPlanRotorRpmAccelerationDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + Note = "1", + Rpm = 1, + RpmMax = 2, + TopDriveTorque = 2, + TopDriveTorqueMax = 3, + }; + + private readonly ProcessMapPlanRotorRpmAcceleration entity = new ProcessMapPlanRotorRpmAcceleration() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + Note = "1", + Rpm = 1, + RpmMax = 2, + TopDriveTorque = 2, + TopDriveTorqueMax = 3, + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanRotorRpmAcceleration GetByNote(DbSet dbSet, ProcessMapPlanRotorRpmAccelerationDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanRotorRpmAccelerationDto GetByNote(IEnumerable dtos, ProcessMapPlanRotorRpmAccelerationDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanRotorRpmAcceleration? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/ProcessMapPlanSlideControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanSlideControllerTest.cs similarity index 82% rename from AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/ProcessMapPlanSlideControllerTest.cs rename to AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanSlideControllerTest.cs index 48f08a50..5aa98c9c 100644 --- a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/ProcessMapPlanSlideControllerTest.cs +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanSlideControllerTest.cs @@ -1,10 +1,10 @@ -using AsbCloudApp.Data.ProcessMaps; -using AsbCloudDb.Model.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudDb.Model.ProcessMapPlan.Operations; using Mapster; using Microsoft.EntityFrameworkCore; using Xunit; -namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Operations; public class ProcessMapPlanSlideControllerTest : ProcessMapPlanBaseControllerTest { private readonly ProcessMapPlanSlideDto dto = new ProcessMapPlanSlideDto() @@ -12,19 +12,19 @@ public class ProcessMapPlanSlideControllerTest : ProcessMapPlanBaseControllerTes IdWell = 1, DepthStart = 1, DepthEnd = 2, - RopLimitMax = 3, - PressureLimitMax = 4, + RopMax = 3, + PressureMax = 4, DifferentialPressure = 5, - DifferentialPressureLimitMax = 6, + DifferentialPressureMax = 6, WeightOnBit = 7, - WeightOnBitLimitMax = 8, + WeightOnBitMax = 8, FlowRate = 9, - FlowRateLimitMax = 10, + FlowRateMax = 10, Spring = 11, - ToolBuckling = 12, + Buckling = 12, Id = 0, IdWellSectionType = 1, - Note = "13" + Note = "13", }; private readonly ProcessMapPlanSlide entity = new ProcessMapPlanSlide() @@ -33,21 +33,21 @@ public class ProcessMapPlanSlideControllerTest : ProcessMapPlanBaseControllerTes DepthEnd = 10, DepthStart = 2, DifferentialPressure = 3, - DifferentialPressureLimitMax = 4, + DifferentialPressureMax = 4, FlowRate = 5, - FlowRateLimitMax = 6, + FlowRateMax = 6, Id = 0, IdWellSectionType = 1, Note = "1", - PressureLimitMax = 2, - RopLimitMax = 5, + PressureMax = 2, + RopMax = 5, WeightOnBit = 8, - WeightOnBitLimitMax = 9, + WeightOnBitMax = 9, IdAuthor = 1, IdEditor = 1, Creation = DateTimeOffset.UtcNow, Spring = 10, - ToolBuckling = 11, + Buckling = 11, }; public ProcessMapPlanSlideControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanSlide") @@ -60,7 +60,7 @@ public class ProcessMapPlanSlideControllerTest : ProcessMapPlanBaseControllerTes var entity = dbContext .Set() .Where(p => p.WeightOnBit == dto.WeightOnBit) - .Where(p => p.WeightOnBitLimitMax == dto.WeightOnBitLimitMax) + .Where(p => p.WeightOnBitMax == dto.WeightOnBitMax) .Where(p => p.Note == dto.Note) .FirstOrDefault(p => p.IdWell == dto.IdWell); @@ -115,32 +115,32 @@ public class ProcessMapPlanSlideControllerTest : ProcessMapPlanBaseControllerTes var dtoUpdate = dto.Adapt(); dtoUpdate.IdWell = 0; dtoUpdate.Note = "nebuchadnezzar"; - dtoUpdate.DifferentialPressureLimitMax++; + dtoUpdate.DifferentialPressureMax++; dtoUpdate.DifferentialPressure++; dtoUpdate.FlowRate++; - dtoUpdate.FlowRateLimitMax++; - dtoUpdate.RopLimitMax++; + dtoUpdate.FlowRateMax++; + dtoUpdate.RopMax++; dtoUpdate.WeightOnBit++; - dtoUpdate.WeightOnBitLimitMax++; + dtoUpdate.WeightOnBitMax++; dtoUpdate.DepthStart++; dtoUpdate.DepthEnd++; dtoUpdate.Spring++; - dtoUpdate.ToolBuckling++; + dtoUpdate.Buckling++; var dtoInsert = dtoUpdate.Adapt(); dtoInsert.Id = 0; dtoInsert.Note = "nebuchad"; - dtoInsert.DifferentialPressureLimitMax++; + dtoInsert.DifferentialPressureMax++; dtoInsert.DifferentialPressure++; dtoInsert.FlowRate++; - dtoInsert.FlowRateLimitMax++; - dtoInsert.RopLimitMax++; + dtoInsert.FlowRateMax++; + dtoInsert.RopMax++; dtoInsert.WeightOnBit++; - dtoInsert.WeightOnBitLimitMax++; + dtoInsert.WeightOnBitMax++; dtoInsert.DepthStart++; dtoInsert.DepthEnd++; dtoUpdate.Spring++; - dtoUpdate.ToolBuckling++; + dtoUpdate.Buckling++; await UpdateOrInsertRange(entity, dtoUpdate, dtoInsert); } diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanSwitchingOffThePumpControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanSwitchingOffThePumpControllerTest.cs new file mode 100644 index 00000000..11768e47 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanSwitchingOffThePumpControllerTest.cs @@ -0,0 +1,71 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudApp.Data.ProcessMaps.Operations; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Operations; + +/// +/// РТК план выключение насоса +/// +public class ProcessMapPlanSwitchingOffThePumpControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanSwitchingOffThePumpControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanSwitchingOffThePump") + { + } + private readonly ProcessMapPlanSwitchingOffThePumpDto dto = new ProcessMapPlanSwitchingOffThePumpDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + Duration = 1, + ResidualPressureLimit = 1, + Note = "5" + }; + + private readonly ProcessMapPlanSwitchingOffThePump entity = new ProcessMapPlanSwitchingOffThePump() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + Duration = 1, + ResidualPressureLimit = 1, + Note = "5" + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanSwitchingOffThePump GetByNote(DbSet dbSet, ProcessMapPlanSwitchingOffThePumpDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanSwitchingOffThePumpDto GetByNote(IEnumerable dtos, ProcessMapPlanSwitchingOffThePumpDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanSwitchingOffThePump? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanSwitchingToTheModeControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanSwitchingToTheModeControllerTest.cs new file mode 100644 index 00000000..73dcd1c1 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanSwitchingToTheModeControllerTest.cs @@ -0,0 +1,68 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudWebApi.IntegrationTests; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using Microsoft.EntityFrameworkCore; +using Xunit; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Operations; + +/// +/// РТК план выход на плановый расход +/// +public class ProcessMapPlanSwitchingToTheModeControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanSwitchingToTheModeControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanSwitchingToTheMode") + { + } + private readonly ProcessMapPlanSwitchingToTheModeDto dto = new ProcessMapPlanSwitchingToTheModeDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + FlowRate = 1, + PressureMax = 1, + RampTime = 1, + Note = "10" + }; + + private readonly ProcessMapPlanSwitchingToTheMode entity = new ProcessMapPlanSwitchingToTheMode() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + FlowRate = 1, + PressureMax = 1, + RampTime = 1, + Note = "10" + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanSwitchingToTheMode GetByNote(DbSet dbSet, ProcessMapPlanSwitchingToTheModeDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanSwitchingToTheModeDto GetByNote(IEnumerable dtos, ProcessMapPlanSwitchingToTheModeDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanSwitchingToTheMode? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanTFOrientationControllerTest.cs b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanTFOrientationControllerTest.cs new file mode 100644 index 00000000..7bccad24 --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Controllers/ProcessMapPlan/Operations/ProcessMapPlanTFOrientationControllerTest.cs @@ -0,0 +1,95 @@ +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; +using AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; +using AsbCloudWebApi.IntegrationTests; +using Microsoft.EntityFrameworkCore; +using Xunit; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudApp.Data.ProcessMaps.Operations; + +namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan.Operations; + +/// +/// РТК план выставление +/// +public class ProcessMapPlanTFOrientationControllerTest : + ProcessMapPlanBaseControllerTest +{ + public ProcessMapPlanTFOrientationControllerTest(WebAppFactoryFixture factory) : base(factory, "ProcessMapPlanTFOrientation") + { + } + private readonly ProcessMapPlanTFOrientationDto dto = new ProcessMapPlanTFOrientationDto() + { + IdWell = 1, + DepthStart = 1, + DepthEnd = 2, + Id = 0, + IdWellSectionType = 1, + DifferentialPressure = 1, + Spring = 1, + FlowRateDown = 1, + FlowRateUp = 1, + Interval = 1, + Note = "1", + PressureMax = 1, + RepetitionsCount = 1, + RopDown = 1, + RopUp = 1, + SlackingOff = 1, + StopPointOffBottom = 1, + TFSetpoint = 1, + Tight = 1, + TorqueMax = 1, + }; + + private readonly ProcessMapPlanTFOrientation entity = new ProcessMapPlanTFOrientation() + { + IdWell = 1, + DepthEnd = 10, + DepthStart = 2, + Id = 0, + IdWellSectionType = 1, + IdAuthor = 1, + IdEditor = 1, + Creation = DateTimeOffset.UtcNow, + DifferentialPressure = 1, + Spring = 1, + FlowRateDown = 1, + FlowRateUp = 1, + Interval = 1, + Note = "1", + PressureMax = 1, + RepetitionsCount = 1, + RopDown = 1, + RopUp = 1, + SlackingOff = 1, + StopPointOffBottom = 1, + TFSetpoint = 1, + Tight = 1, + TorqueMax = 1, + }; + + [Fact] + public async Task Get_actual_returns_success() + { + await Get(entity, dto); + } + + protected override ProcessMapPlanTFOrientation GetByNote(DbSet dbSet, ProcessMapPlanTFOrientationDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanTFOrientationDto GetByNote(IEnumerable dtos, ProcessMapPlanTFOrientationDto dto) + { + throw new NotImplementedException(); + } + + protected override ProcessMapPlanTFOrientation? GetByWellId() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanAntiCrashRotationController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanAntiCrashRotationController.cs new file mode 100644 index 00000000..5278589b --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanAntiCrashRotationController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Functions; + +/// +/// РТК план противоаварийное вращение +/// +public class ProcessMapPlanAntiCrashRotationController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanAntiCrashRotationController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanAntiCrashRotationParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanAntiCrashRotationExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_противоаварийное_вращение.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanAutoHoldTFController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanAutoHoldTFController.cs new file mode 100644 index 00000000..645d016b --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanAutoHoldTFController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Functions; + +/// +/// РТК план автоудержание TF +/// +public class ProcessMapPlanAutoHoldTFController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanAutoHoldTFController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanAutoHoldTFParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanAutoHoldTFExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_автоудержание_tf.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanDamperController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanDamperController.cs new file mode 100644 index 00000000..0ae7430a --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanDamperController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Functions; + +/// +/// РТК план демпфер +/// +public class ProcessMapPlanDamperController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanDamperController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanDamperParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanDamperExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_демпфер.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanDrillTestController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanDrillTestController.cs new file mode 100644 index 00000000..70ecaa23 --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanDrillTestController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Functions; + +/// +/// РТК план дрилтест +/// +public class ProcessMapPlanDrillTestController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanDrillTestController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanDrillTestParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanDrillTestExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_дрилтест.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanOscillationController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanOscillationController.cs new file mode 100644 index 00000000..c16f5d16 --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanOscillationController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Functions; + +/// +/// РТК план осцилляция +/// +public class ProcessMapPlanOscillationController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanOscillationController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanOscillationParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanOscillationExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_осцилляция.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanShockTestController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanShockTestController.cs new file mode 100644 index 00000000..748f5ad6 --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanShockTestController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Functions; + +/// +/// РТК план shock test +/// +public class ProcessMapPlanShockTestController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanShockTestController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanShockTestParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanShockTestExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_shock_test.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanStaticMeasurementOutputController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanStaticMeasurementOutputController.cs new file mode 100644 index 00000000..95984016 --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Functions/ProcessMapPlanStaticMeasurementOutputController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Functions; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Functions; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Functions; + +/// +/// РТК план выход статического замера +/// +public class ProcessMapPlanStaticMeasurementOutputController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanStaticMeasurementOutputController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanStaticMeasurementOutputParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanStaticMeasurementOutputExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_выход_статического_замера.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanLoadCapacityController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanLoadCapacityController.cs new file mode 100644 index 00000000..58b2bc3c --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanLoadCapacityController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Operations; + +/// +/// РТК план выработка нагрузки +/// +public class ProcessMapPlanLoadCapacityController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanLoadCapacityController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanLoadCapacityParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanLoadCapacityExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_проработка_слайд.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanOscillationAnglesController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanOscillationAnglesController.cs new file mode 100644 index 00000000..7b74ad70 --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanOscillationAnglesController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Operations; + +/// +/// РТК план определения углов осцилляции +/// +public class ProcessMapPlanOscillationAnglesController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanOscillationAnglesController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanOscillationAnglesParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanOscillationAnglesExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_определение_углов_осцилляции.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanPositioningOffTheBottomController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanPositioningOffTheBottomController.cs new file mode 100644 index 00000000..df24f26b --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanPositioningOffTheBottomController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Operations; + +/// +/// РТК план позиционирование над забоем +/// +public class ProcessMapPlanPositioningOffTheBottomController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanPositioningOffTheBottomController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanPositioningOffTheBottomParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanPositioningOffTheBottomExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_позиционирование_над_забоем.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanReamingRotorController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanReamingRotorController.cs new file mode 100644 index 00000000..610a815d --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanReamingRotorController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps; + +/// +/// РТК план проработка для ротора +/// +public class ProcessMapPlanReamingRotorController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanReamingRotorController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanReamingRotorParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanReamingRotorExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_проработка_ротор.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanReamingSlideController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanReamingSlideController.cs new file mode 100644 index 00000000..049c4dbe --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanReamingSlideController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Operations; + +/// +/// РТК план проработка для слайда +/// +public class ProcessMapPlanReamingSlideController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanReamingSlideController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanReamingSlideParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanReamingSlideExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_проработка_слайд.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanRecordingStaticMeasurementController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanRecordingStaticMeasurementController.cs new file mode 100644 index 00000000..ba857d80 --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanRecordingStaticMeasurementController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Operations; + +/// +/// РТК план записи статического замера +/// +public class ProcessMapPlanRecordingStaticMeasurementController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanRecordingStaticMeasurementController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanRecordingStaticMeasurementParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanRecordingStaticMeasurementExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_запись_статического_замера.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanRotorController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanRotorController.cs similarity index 85% rename from AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanRotorController.cs rename to AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanRotorController.cs index f437820d..e661009c 100644 --- a/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanRotorController.cs +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanRotorController.cs @@ -1,12 +1,12 @@ -using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; using AsbCloudApp.Services; -using AsbCloudDb.Model.ProcessMaps; +using AsbCloudDb.Model.ProcessMapPlan.Operations; using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; -namespace AsbCloudWebApi.Controllers.ProcessMaps; +namespace AsbCloudWebApi.Controllers.ProcessMaps.Operations; /// /// РТК план бурения (ротор) diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanSlideController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanSlideController.cs similarity index 85% rename from AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanSlideController.cs rename to AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanSlideController.cs index b66d6c6a..7511277f 100644 --- a/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanSlideController.cs +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanSlideController.cs @@ -1,12 +1,12 @@ -using AsbCloudApp.Data.ProcessMaps; +using AsbCloudApp.Data.ProcessMaps.Operations; using AsbCloudApp.Repositories; using AsbCloudApp.Requests; using AsbCloudApp.Services; -using AsbCloudDb.Model.ProcessMaps; +using AsbCloudDb.Model.ProcessMapPlan.Operations; using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; -namespace AsbCloudWebApi.Controllers.ProcessMaps; +namespace AsbCloudWebApi.Controllers.ProcessMaps.Operations; /// /// РТК план бурения (ротор) diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanSwitchingOffThePumpController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanSwitchingOffThePumpController.cs new file mode 100644 index 00000000..8350cb89 --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanSwitchingOffThePumpController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Operations; + +/// +/// РТК план выключение насоса +/// +public class ProcessMapPlanSwitchingOffThePumpController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanSwitchingOffThePumpController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanSwitchingOffThePumpParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanSwitchingOffThePumpExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_выключение_насоса.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanSwitchingToTheModeController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanSwitchingToTheModeController.cs new file mode 100644 index 00000000..d749513d --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanSwitchingToTheModeController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Operations; + +/// +/// РТК план выход на плановый расход +/// +public class ProcessMapPlanSwitchingToTheModeController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanSwitchingToTheModeController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanSwitchingToTheModeParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanSwitchingToTheModeExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_выход_на_плановый_расход.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanTFOrientationController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanTFOrientationController.cs new file mode 100644 index 00000000..45605c8c --- /dev/null +++ b/AsbCloudWebApi/Controllers/ProcessMaps/Operations/ProcessMapPlanTFOrientationController.cs @@ -0,0 +1,28 @@ +using AsbCloudApp.Data.ProcessMaps.Operations; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model.ProcessMapPlan.Operations; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; +using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; + +namespace AsbCloudWebApi.Controllers.ProcessMaps.Operations; + +/// +/// РТК план выставление +/// +public class ProcessMapPlanTFOrientationController : + ProcessMapPlanBaseController +{ + public ProcessMapPlanTFOrientationController( + IChangeLogRepository repository, + IWellService wellService, + ProcessMapPlanTFOrientationParser parserService, + ITelemetryService telemetryService, + ProcessMapPlanTFOrientationExportService processMapPlanExportService) + : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) + { + } + + protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_выставление.xlsx"; +} \ No newline at end of file diff --git a/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanReamController.cs b/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanReamController.cs deleted file mode 100644 index 2e9aeedf..00000000 --- a/AsbCloudWebApi/Controllers/ProcessMaps/ProcessMapPlanReamController.cs +++ /dev/null @@ -1,26 +0,0 @@ -using AsbCloudApp.Data.ProcessMaps; -using AsbCloudApp.Repositories; -using AsbCloudApp.Requests; -using AsbCloudApp.Services; -using AsbCloudDb.Model.ProcessMaps; -using AsbCloudInfrastructure.Services.ProcessMapPlan.Export; -using AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; - -namespace AsbCloudWebApi.Controllers.ProcessMaps; - -/// -/// РТК план проработка -/// -public class ProcessMapPlanReamController : ProcessMapPlanBaseController -{ - public ProcessMapPlanReamController(IChangeLogRepository repository, - IWellService wellService, - ProcessMapPlanReamParser parserService, - ITelemetryService telemetryService, - ProcessMapPlanReamExportService processMapPlanExportService) - : base(repository, wellService, parserService, processMapPlanExportService, telemetryService) - { - } - - protected override string TemplateFileName => "ЕЦП_шаблон_файла_РТК_план_проработка.xlsx"; -} \ No newline at end of file