using RobotNet.MapShares.Dtos;
using RobotNet.MapShares.Enums;

namespace RobotNet.WebApp.Robots.Components.Monitoring.Element;

public class EdgeModel(EdgeDto data, NodeModel startNode, NodeModel endNode) : IDisposable
{
    public Guid Id => Data.Id;
    public Guid MapId => Data.MapId;
    public double X1 => StartNode.X;
    public double Y1 => StartNode.Y;
    public double X2 => EndNode.X;
    public double Y2 => EndNode.Y;
    public DirectionAllowed DirectionAllowed => Data.DirectionAllowed;
    public TrajectoryDegree TrajectoryDegree => Data.TrajectoryDegree;
    public double ControlPoint1X => Data.ControlPoint1X;
    public double ControlPoint1Y => Data.ControlPoint1Y;
    public double ControlPoint2X => Data.ControlPoint2X;
    public double ControlPoint2Y => Data.ControlPoint2Y;
    public double MaxSpeed => Data.MaxSpeed;
    public double MaxHeight => Data.MaxHeight;
    public double MinHeight => Data.MinHeight;
    public bool RotationAllowed => Data.RotationAllowed;
    public double MaxRotationSpeed => Data.MaxRotationSpeed;
    public string Actions => Data.Actions;
    public double AllowedDeviationXy => Data.AllowedDeviationXy;
    public double AllowedDeviationTheta => Data.AllowedDeviationTheta;
    public NodeModel StartNode { get; private set; } = startNode;
    public NodeModel EndNode { get; private set; } = endNode;


    private readonly EdgeDto Data = data;

    public void Dispose()
    {
        GC.SuppressFinalize(this);
    }
}
