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
    {
        [Column("id_telemetry")]
        public int IdTelemetry { get; set; }

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

        [Column("date", TypeName = "timestamp with time zone"), Comment("'2021-10-19 18:23:54+05'")]
        public DateTimeOffset Date { get; set; }

        [Column("mode"), Comment("Режим САУБ")]
        public short? Mode { get; set; }

        [Column("id_feed_regulator"), Comment("Текущий критерий бурения")]
        public short? IdFeedRegulator { get; set; }

        [Column("mse_state"), Comment("Текущее состояние работы MSE")]
        public short? MseState { get; set; }

        [Column("well_depth"), Comment("Глубина забоя")]
        public float? WellDepth { get; set; }

        [Column("bit_depth"), Comment("Положение инструмента")]
        public float? BitDepth { get; set; }

        [Column("block_position"), Comment("Высота талевого блока")]
        public float? BlockPosition { get; set; }

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

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

        [Column("block_speed"), Comment("Скорость талевого блока")]
        public float? BlockSpeed { get; set; }

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

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

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

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

        [Column("pressure"), Comment("Давление")]
        public float? Pressure { get; set; }

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

        [Column("pressure_sp"), Comment("Давление. Задание")]
        public float? PressureSp { get; set; }

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

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

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

        [Column("pressure_delta_limit_max"), Comment("Давление дифф. Аварийное макс.")]
        public float? PressureDeltaLimitMax { get; set; }

        [Column("axial_load"), Comment("Осевая нагрузка")]
        public float? AxialLoad { get; set; }

        [Column("axial_load_sp"), Comment("Осевая нагрузка. Задание")]
        public float? AxialLoadSp { get; set; }

        [Column("axial_load_limit_max"), Comment("Осевая нагрузка. Аварийная макс.")]
        public float? AxialLoadLimitMax { get; set; }

        [Column("hook_weight"), Comment("Вес на крюке")]
        public float? HookWeight { get; set; }

        [Column("hook_weight_idle"), Comment("Вес на крюке. Холостой ход")]
        public float? HookWeightIdle { get; set; }

        [Column("hook_weight_limit_min"), Comment("Вес на крюке. Посадка")]
        public float? HookWeightLimitMin { get; set; }

        [Column("hook_weight_limit_max"), Comment("Вес на крюке. Затяжка")]
        public float? HookWeightLimitMax { get; set; }

        [Column("rotor_torque"), Comment("Момент на роторе")]
        public float? RotorTorque { get; set; }

        [Column("rotor_torque_idle"), Comment("Момент на роторе. Холостой ход")]
        public float? RotorTorqueIdle { get; set; }

        [Column("rotor_torque_sp"), Comment("Момент на роторе. Задание")]
        public float? RotorTorqueSp { get; set; }

        [Column("rotor_torque_limit_max"), Comment("Момент на роторе. Аварийный макс.")]
        public float? RotorTorqueLimitMax { get; set; }

        [Column("rotor_speed"), Comment("Обороты ротора")]
        public float? RotorSpeed { get; set; }

        [Column("flow"), Comment("Расход")]
        public float? Flow { get; set; }

        [Column("flow_idle"), Comment("Расход. Холостой ход")]
        public float? FlowIdle { get; set; }

        [Column("flow_delta_limit_max"), Comment("Расход. Аварийный макс.")]
        public float? FlowDeltaLimitMax { get; set; }


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

    }

}