using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace AsbCloudApp.Data.ProcessMaps.Operations;

/// <summary>
/// РТК план позиционирования над забоем
/// </summary>
public class ProcessMapPlanPositioningOffTheBottomDto : ProcessMapPlanBaseDto
{
    /// <summary>
    /// Остановка над забоем, м.
    /// </summary>
    [Range(0.0, 30.0, ErrorMessage = "Остановка над забоем, м., должно быть в пределах от 0 до 30")]
    public double StopOffTheBottom { get; set; }

    /// <summary>
    /// Максимально допустимое давление, атм.
    /// </summary>
    [Range(0.0, 400.0, ErrorMessage = "Максимально допустимое давление, атм., должно быть в пределах от 0 до 400")]
    public double PressureMax { get; set; }

    /// <summary>
    /// Перепад давления уставка, атм.
    /// </summary>
    [Range(0.0, 60.0, ErrorMessage = "Перепад давления уставка, атм., должно быть в пределах от 0 до 60")]
    public double DifferentialPressure { get; set; }

    /// <summary>
    /// Затяжка, т.
    /// </summary>
    [Range(0.0, 20.0, ErrorMessage = "Затяжка, т., должно быть в пределах от 0 до 20")]
    public double Tight { get; set; }

    /// <summary>
    /// Посадка, т.
    /// </summary>
    [Range(0.0, 20.0, ErrorMessage = "Посадка, т., должно быть в пределах от 0 до 20")]
    public double SlackingOff { get; set; }

    /// <summary>
    /// Максимально допустимый момент, кН*м.
    /// </summary>
    [Range(0.0, 35.0, ErrorMessage = "Максимально допустимый момент, кН*м., должно быть в пределах от 0 до 35")]
    public double TorqueMax { get; set; }

    /// <summary>
    /// Скорость вверх, м/ч.
    /// </summary>
    [Range(0.0, 999.0, ErrorMessage = "Скорость вверх, м/ч., должно быть в пределах от 0 до 999")]
    public double RopUp { get; set; }

    /// <summary>
    /// Скорость вниз, м/ч.
    /// </summary>
    [Range(0.0, 999.0, ErrorMessage = "Скорость вниз, м/ч., должно быть в пределах от 0 до 999")]
    public double RopDown { get; set; }

    /// <summary>
    /// Обороты вверх, об/мин.
    /// </summary>
    [Range(0.0, 270.0, ErrorMessage = "Обороты вверх, об/мин., должно быть в пределах от 0 до 270")]
    public double RpmUp { get; set; }

    /// <summary>
    /// Обороты вниз, об/мин.
    /// </summary>
    [Range(0.0, 270.0, ErrorMessage = "Обороты вниз, об/мин., должно быть в пределах от 0 до 270")]
    public double RpmDown { get; set; }

    /// <summary>
    /// Расход вверх, л/с.
    /// </summary>
    [Range(0.0, 100.0, ErrorMessage = "Расход вверх, л/с., должно быть в пределах от 0 до 100")]
    public double FlowRateUp { get; set; }

    /// <summary>
    /// Расход вниз, л/с.
    /// </summary>
    [Range(0.0, 100.0, ErrorMessage = "Расход вниз, л/с., должно быть в пределах от 0 до 100")]
    public double FlowRateDown { get; set; }

    /// <summary>
    /// Примечание
    /// </summary>
    [StringLength(1024, ErrorMessage = "Примечание, должно быть не более 1024 символов")]
    public string Note { get; set; } = string.Empty;
}