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_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; }
}