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

namespace AsbCloudDb.Model
{

    [Table("t_well_section"), Comment("секция скважины")]
    public class WellSection: IId, IIdWell
    {
        [Key]
        [Column("id")]
        public int Id { get; set; }

        [Column("id_well_section_type")]
        public int IdWellSectionType { get; set; }

        [Column("id_well")]
        public int IdWell { get; set; }

        [Column("well_depth_plan"), Comment("глубина план, м")]
        public double WellDepthPlan { get; set; }

        [Column("well_depth_fact"), Comment("глубина факт, м")]
        public double WellDepthFact { get; set; }

        [Column("build_days_plan"), Comment("период план, д")]
        public double BuildDaysPlan { get; set; }

        [Column("build_days_fact"), Comment("период факт, д")]
        public double BuildDaysFact { get; set; }

        [Column("rate_of_penetration_plan"), Comment("Механическая скорость проходки план, м/час")]
        public double RateOfPenetrationPlan { get; set; }

        [Column("rate_of_penetration_fact"), Comment("Механическая скорость проходки факт, м/час")]
        public double RateOfPenetrationFact { get; set; }

        [Column("route_speed_plan"), Comment("Рейсовая скорость план, м/час")]
        public double RouteSpeedPlan { get; set; }

        [Column("route_speed_fact"), Comment("Рейсовая скорость факт, м/час")]
        public double RouteSpeedFact { get; set; }

        [Column("bha_down_speed_plan"), Comment("Скорость спуска КНБК план")]
        public double BhaDownSpeedPlan { get; set; }

        [Column("bha_down_speed_fact"), Comment("Скорость спуска КНБК факт")]
        public double BhaDownSpeedFact { get; set; }

        [Column("bha_up_speed_plan"), Comment("Скорость подъема КНБК план")]
        public double BhaUpSpeedPlan { get; set; }

        [Column("bha_up_speed_fact"), Comment("Скорость подъема КНБК факт")]
        public double BhaUpSpeedFact { get; set; }

        [Column("casing_down_speed_plan"), Comment("Скорость спуска обсадной колонны план")]
        public double CasingDownSpeedPlan { get; set; }

        [Column("casing_down_speed_fact"), Comment("Скорость спуска обсадной колонны факт")]
        public double CasingDownSpeedFact { get; set; }

        [JsonIgnore]
        [ForeignKey(nameof(IdWell))]
        [InverseProperty(nameof(Model.Well.Sections))]
        public virtual Well Well { get; set; }

        [JsonIgnore]
        [ForeignKey(nameof(IdWellSectionType))]
        [InverseProperty(nameof(Model.WellSectionType.WellSections))]
        public virtual WellSectionType WellSectionType { get; set; }
    }
}