using System.ComponentModel.DataAnnotations;

namespace AsbCloudApp.Data.ProcessMaps;

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

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

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

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

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

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

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

    /// <summary>
    /// Момент на ВСП, кН*м. Ограничение
    /// </summary>
    [Range(0.0, 35.0, ErrorMessage = "Момент на ВСП, кН*м., ограничение, должно быть в пределах от 0 до 35.0")]
    public double TopDriveTorqueLimit { get; set; }

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

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

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

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

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

}