using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using CellularManagement.Domain.Entities.Common;
namespace CellularManagement.Domain.Entities.Device;
///
/// 蜂窝设备实体
///
public class CellularDevice : AuditableEntity
{
private CellularDevice() { }
///
/// 设备ID
///
[Key]
public string Id { get; private set; }
///
/// 设备名称
///
[Required]
[MaxLength(100)]
public string Name { get; private set; } = null!;
///
/// 设备序列号
///
[Required]
[MaxLength(50)]
public string SerialNumber { get; private set; } = null!;
///
/// 设备描述
///
[MaxLength(500)]
public string Description { get; private set; }
///
/// 设备类型ID
///
[Required]
public string DeviceTypeId { get; private set; }
///
/// 设备类型
///
[ForeignKey(nameof(DeviceTypeId))]
public virtual DeviceType DeviceType { get; private set; } = null!;
///
/// 设备状态ID
///
[Required]
public string StatusId { get; private set; }
///
/// 设备状态
///
[ForeignKey(nameof(StatusId))]
public virtual DeviceStatus Status { get; private set; } = null!;
///
/// 协议版本ID
///
[Required]
public string ProtocolVersionId { get; private set; }
///
/// 协议版本
///
[ForeignKey(nameof(ProtocolVersionId))]
public virtual ProtocolVersion ProtocolVersion { get; private set; } = null!;
///
/// 当前固件版本
///
[Required]
[MaxLength(50)]
public string FirmwareVersion { get; private set; } = null!;
///
/// 创建时间
///
public DateTime CreatedAt { get; private set; }
///
/// 更新时间
///
public DateTime UpdatedAt { get; private set; }
///
/// 创建设备
///
public static CellularDevice Create(
string name,
string serialNumber,
string description,
string deviceTypeId,
string statusId,
string protocolVersionId,
string firmwareVersion)
{
var device = new CellularDevice
{
Id = Guid.NewGuid().ToString(),
Name = name,
SerialNumber = serialNumber,
Description = description,
DeviceTypeId = deviceTypeId,
StatusId = statusId,
ProtocolVersionId = protocolVersionId,
FirmwareVersion = firmwareVersion,
CreatedAt = DateTime.UtcNow,
UpdatedAt = DateTime.UtcNow
};
return device;
}
///
/// 更新设备
///
public void Update(
string name,
string serialNumber,
string description,
string deviceTypeId,
string statusId,
string protocolVersionId,
string firmwareVersion)
{
Name = name;
SerialNumber = serialNumber;
Description = description;
DeviceTypeId = deviceTypeId;
StatusId = statusId;
ProtocolVersionId = protocolVersionId;
FirmwareVersion = firmwareVersion;
UpdatedAt = DateTime.UtcNow;
}
}