using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using AsbCloudDb.Model.ProcessMapPlan;
using Microsoft.EntityFrameworkCore;

namespace AsbCloudDb.Model.ProcessMapPlan.Operations;

[Table("t_process_map_plan_rotor_lowering_bit"), Comment("РТК подход к забою в роторе")]
public class ProcessMapPlanRotorLoweringBit : ProcessMapPlanBase
{
    [Column("pressure_max"), Comment("Максимально допустимое давление, атм.")]
    [Range(0.0, 400.0)]
    [Required]
    public double PressureMax { get; set; }

    [Column("differential_pressure"), Comment("Перепад давления уставка, атм.")]
    [Range(0.0, 60.0)]
    [Required]
    public double DifferentialPressure { get; set; }

    [Column("slacking_off"), Comment("Посадка, т.")]
    [Range(0.0, 20.0)]
    [Required]
    public double SlackingOff { get; set; }

    [Column("torque_max"), Comment("Максимально допустимый момент, кН*м.")]
    [Range(0.0, 35.0)]
    [Required]
    public double TorqueMax { get; set; }

    [Column("rop_down"), Comment("Скорость вниз, м/ч.")]
    [Range(0.0, 999.0)]
    [Required]
    public double RopDown { get; set; }

    [Column("rpm_down"), Comment("Обороты вниз, об/мин.")]
    [Range(0.0, 270.0)]
    [Required]
    public double RpmDown { get; set; }

    [Column("flow_rate_down"), Comment("Расход вниз, л/с.")]
    [Range(0.0, 100.0)]
    [Required]
    public double FlowRateDown { get; set; }

    [Column("note"), Comment("Примечание"), StringLength(1024)]
    public string Note { get; set; } = string.Empty;

    [ForeignKey(nameof(IdPrevious))]
    public virtual ProcessMapPlanRotorLoweringBit? Previous { get; set; }
}