Files
Denso/srcs/RobotNet10/Commons/RobotNet10.MapManager/Data/Station.cs
2026-07-03 16:31:37 +07:00

72 lines
2.0 KiB
C#

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace RobotNet10.MapManager.Data;
/// <summary>
/// Station entity - Interaction points for vehicles
/// Maps to VDMA LIF: layouts[].stations[]
/// </summary>
[Table("Stations")]
public class Station
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
/// <summary>
/// Parent level reference
/// </summary>
[Required]
public Guid LevelId { get; set; }
/// <summary>
/// Station identifier (VDMA LIF: stationId) - Required
/// Unique within level
/// </summary>
[Required]
[StringLength(128)]
public string StationId { get; set; } = string.Empty;
/// <summary>
/// Station name (VDMA LIF: stationName) - Optional
/// </summary>
[StringLength(256)]
public string? StationName { get; set; }
/// <summary>
/// Station description (VDMA LIF: stationDescription) - Optional
/// </summary>
public string? StationDescription { get; set; }
/// <summary>
/// Station height in meters (VDMA LIF: stationHeight) - Optional
/// </summary>
public double? StationHeight { get; set; }
/// <summary>
/// X coordinate in meters (VDMA LIF: stationPosition.x) - Required
/// </summary>
[Required]
public double X { get; set; }
/// <summary>
/// Y coordinate in meters (VDMA LIF: stationPosition.y) - Required
/// </summary>
[Required]
public double Y { get; set; }
/// <summary>
/// Theta orientation in radians (VDMA LIF: stationPosition.theta) - Optional
/// Range: [-Pi ... Pi]
/// </summary>
public double? Theta { get; set; }
// Navigation properties
[ForeignKey(nameof(LevelId))]
public virtual LayoutLevel Level { get; set; } = null!;
public virtual ICollection<StationInteractionNode> InteractionNodes { get; set; } = new List<StationInteractionNode>();
}