using System.ComponentModel.DataAnnotations;

namespace AsbCloudApp.Data.ProcessMaps;

/// <summary>
/// РТК план бурение скважины в слайде
/// </summary>
public class ProcessMapPlanSlideDto : ProcessMapPlanBaseDto
{
    /// <summary>
    /// Максимально допустимая скорость, м/ч
    /// </summary>
    [Range(0, 800.0, ErrorMessage = "Максимально допустимая скорость, м/ч., должно быть в пределах от 0 до 800.0")]
    public double RopLimitMax { get; set; }

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

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

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

    /// <summary>
    /// Нагрузка, т. Уставка
    /// </summary>
    [Range(0, 50.0, ErrorMessage = " Нагрузка, т., уставка, должно быть в пределах от 0 до 50.0")]
    public double WeightOnBit { get; set; }

    /// <summary>
    /// Нагрузка, т. Ограничение
    /// </summary>
    [Range(0, 50.0, ErrorMessage = "Нагрузка, т., ограничение, должно быть в пределах от 0 до 50.0")]
    public double WeightOnBitLimitMax { get; set; }

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

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

    /// <summary>
    /// Расчётная пружина, градус
    /// </summary>
    [Range(0, 9999.9, ErrorMessage = "Расчётная пружина, градус, должно быть в пределах от 0 до 9999.9")]
    public double Spring { get; set; }

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

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