using Microsoft.EntityFrameworkCore;
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text.Json.Serialization;

#nullable disable

namespace AsbCloudDb.Model
{
    [Table("t_telemetry_data_saub"), Comment("набор основных данных по SAUB")]
    public partial class TelemetryDataSaub : ITelemetryData
    {
        [Key]
        [Column("id")]
        public int Id { get; set; }

        [Column("id_telemetry")]
        public int IdTelemetry { get; set; }
        [Column("date", TypeName = "timestamp with time zone"), Comment("'2021-10-19 18:23:54+05'")]
        public DateTime Date { get; set; }
        [Column("mode"), Comment("Режим САУБ")]
        public int? Mode { get; set; }


        [Column("id_user"), Comment("Пользователь САУБ")]
        public int? IdUser { get; set; }


        [Column("well_depth"), Comment("Глубина забоя")]
        public double? WellDepth { get; set; }
        [Column("bit_depth"), Comment("Положение инструмента")]
        public double? BitDepth { get; set; }
        [Column("block_position"), Comment("Высота талевого блока")]
        public double? BlockPosition { get; set; }


        [Column("block_position_min"), Comment("Талевый блок. Мин положение")]
        public double? BlockPositionMin { get; set; }

        [Column("block_position_max"), Comment("Талевый блок. Макс положение")]
        public double? BlockPositionMax { get; set; }


        [Column("block_speed"), Comment("Скорость талевого блока")]
        public double? BlockSpeed { get; set; }
        [Column("block_speed_sp"), Comment("Скорости талевого блока. Задание")]
        public double? BlockSpeedSp { get; set; }

        [Column("block_speed_sp_rotor"), Comment("Талевый блок. Задание скорости для роторного бурения")]
        public double? BlockSpeedSpRotor { get; set; }

        [Column("block_speed_sp_slide"), Comment("Талевый блок. Задание скорости для режима слайда")]
        public double? BlockSpeedSpSlide { get; set; }

        [Column("block_speed_sp_develop"), Comment("Талевый блок. Задание скорости для проработки")]
        public double? BlockSpeedSpDevelop { get; set; }

        [Column("pressure"), Comment("Давление")]
        public double? Pressure { get; set; }
        [Column("pressure_idle"), Comment("Давление. Холостой ход")]
        public double? PressureIdle { get; set; }
        [Column("pressure_sp"), Comment("Давление. Задание")]
        public double? PressureSp { get; set; }

        [Column("pressure_sp_rotor"), Comment("Давление. Задание для роторного бурения")]
        public double? PressureSpRotor { get; set; }


        [Column("pressure_sp_slide"), Comment("Давление. Задание для режима слайда")]
        public double? PressureSpSlide { get; set; }

        [Column("pressure_sp_develop"), Comment("Давление. Задание для проработки")]
        public double? PressureSpDevelop { get; set; }


        [Column("pressure_delta_limit_max"), Comment("Давление дифф. Аварийное макс.")]
        public double? PressureDeltaLimitMax { get; set; }
        [Column("axial_load"), Comment("Осевая нагрузка")]
        public double? AxialLoad { get; set; }
        [Column("axial_load_sp"), Comment("Осевая нагрузка. Задание")]
        public double? AxialLoadSp { get; set; }
        [Column("axial_load_limit_max"), Comment("Осевая нагрузка. Аварийная макс.")]
        public double? AxialLoadLimitMax { get; set; }
        [Column("hook_weight"), Comment("Вес на крюке")]
        public double? HookWeight { get; set; }
        [Column("hook_weight_idle"), Comment("Вес на крюке. Холостой ход")]
        public double? HookWeightIdle { get; set; }
        [Column("hook_weight_limit_min"), Comment("Вес на крюке. Посадка")]
        public double? HookWeightLimitMin { get; set; }
        [Column("hook_weight_limit_max"), Comment("Вес на крюке. Затяжка")]
        public double? HookWeightLimitMax { get; set; }
        [Column("rotor_torque"), Comment("Момент на роторе")]
        public double? RotorTorque { get; set; }
        [Column("rotor_torque_idle"), Comment("Момент на роторе. Холостой ход")]
        public double? RotorTorqueIdle { get; set; }
        [Column("rotor_torque_sp"), Comment("Момент на роторе. Задание")]
        public double? RotorTorqueSp { get; set; }
        [Column("rotor_torque_limit_max"), Comment("Момент на роторе. Аварийный макс.")]
        public double? RotorTorqueLimitMax { get; set; }
        [Column("rotor_speed"), Comment("Обороты ротора")]
        public double? RotorSpeed { get; set; }
        [Column("flow"), Comment("Расход")]
        public double? Flow { get; set; }
        [Column("flow_idle"), Comment("Расход. Холостой ход")]
        public double? FlowIdle { get; set; }
        [Column("flow_delta_limit_max"), Comment("Расход. Аварийный макс.")]
        public double? FlowDeltaLimitMax { get; set; }
        [Column("id_feed_regulator"), Comment("Текущий критерий бурения")]
        public double? IdFeedRegulator { get; set; }
        [Column("mse_state"), Comment("Текущее состояние работы MSE")]
        public double? MseState { get; set; }

        [JsonIgnore]
        [ForeignKey(nameof(IdTelemetry))]
        [InverseProperty(nameof(Model.Telemetry.DataSaub))]
        public virtual Telemetry Telemetry { get; set; }
    }
}