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

namespace AsbCloudDb.Model.ProcessMaps;

[Table("t_process_map_plan_oscillation"), Comment("Осцилляция")]
public class ProcessMapPlanOscillation : ProcessMapPlanBase
{
    [Column("optimal_oscillation_angle"), Comment("Оптимальный угол осцилляции, градусы")]
    [Range(0.0, 6000.0)]
    [Required]
    public double OptimalOscillationAngle { get; set; }

    [Column("Rpm​_right"), Comment("Скорость вправо, об/мин")]
    [Range(0.0, 270.0)]
    [Required]
    public double RpmRight { get; set; }

    [Column("Rpm_left"), Comment("Скорость влево, об/мин")]
    [Range(0.0, 270.0)]
    [Required]
    public double RpmLeft { get; set; }

    [Column("torque_max_right"), Comment("Ограничение момента вправо, кН*м")]
    [Range(0.0, 35.0)]
    [Required]
    public double TorqueMaxRight { get; set; }

    [Column("torque_max_left"), Comment("Ограничение момента влево, кН*м")]
    [Range(0.0, 35.0)]
    [Required]
    public double TorqueMaxLeft { get; set; }

    [Column("mode"), Comment("Режим Авто/Руч")]
    [Range(0, 1)]
    [Required]
    public int Mode { get; set; }

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

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