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