using System.ComponentModel.DataAnnotations;

namespace AsbCloudApp.Data.ProcessMaps.Functions;

/// <summary>
/// РТК план осцилляция
/// </summary>
public class ProcessMapPlanOscillationDto : ProcessMapPlanBaseDto
{
    /// <summary>
    /// Оптимальный угол осцилляции, градусы
    /// </summary>
    [Range(0.0, 6000.0, ErrorMessage = "Оптимальный угол осцилляции, градусы, должно быть в пределах от 0 до 6000")]
    public double OptimalOscillationAngle { get; set; }

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

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

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

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

    /// <summary>
    /// Режим Авто/Руч
    /// </summary>
    [Range(0, 1, ErrorMessage = "Режим Авто/Руч, должен быть либо 0, либо 1")]
    public int Mode { get; set; }

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