using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using RobotNet10.FleetManager.Shared.Enums;
namespace RobotNet10.FleetManager.Data;
///
/// Robot model entity - Master data for robot types
///
[Table("RobotModels")]
public class RobotModel
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
///
/// Model name
///
[Required]
[StringLength(256)]
public string ModelName { get; set; } = string.Empty;
///
/// Robot length in meters
///
[Required]
public double Length { get; set; }
///
/// Robot width in meters
///
[Required]
public double Width { get; set; }
///
/// Image width in pixels
///
[Required]
public int ImageWidth { get; set; }
///
/// Image height in pixels
///
[Required]
public int ImageHeight { get; set; }
///
/// Navigation point X coordinate (relative to robot center) in meters
///
[Required]
public double NavigationPointX { get; set; }
///
/// Navigation point Y coordinate (relative to robot center) in meters
///
[Required]
public double NavigationPointY { get; set; }
///
/// Navigation type
///
[Required]
public NavigationType NavigationType { get; set; }
///
/// Foreign key to VehicleType (in MapManager database)
/// Links RobotModel to VehicleType for map filtering
///
public Guid? VehicleTypeId { get; set; }
///
/// Created date
///
[Required]
public DateTime CreatedDate { get; set; } = DateTime.UtcNow;
///
/// Updated date
///
public DateTime? UpdatedDate { get; set; }
// Navigation properties
///
/// Collection of robots using this model
///
public virtual ICollection Robots { get; set; } = [];
}