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() { }
///
/// 设备名称
///
[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; }
///
/// 协议版本集合
///
public virtual ICollection ProtocolVersions { get; private set; } = new List();
///
/// Agent端口
///
[Required]
public int AgentPort { get; private set; }
///
/// IP地址
///
[Required]
[MaxLength(45)]
public string IpAddress { get; private set; } = null!;
///
/// 是否启用
///
public bool IsEnabled { get; private set; } = true;
///
/// 设备状态(启动/未启动)
///
public bool IsRunning { get; private set; } = false;
///
/// 创建设备
///
public static CellularDevice Create(
string name,
string serialNumber,
string description,
int agentPort,
string ipAddress,
string createdBy,
bool isEnabled = true,
bool isRunning = false)
{
var device = new CellularDevice
{
Id = Guid.NewGuid().ToString(),
Name = name,
SerialNumber = serialNumber,
Description = description,
AgentPort = agentPort,
IpAddress = ipAddress,
IsEnabled = isEnabled,
IsRunning = isRunning,
CreatedAt = DateTime.UtcNow,
UpdatedAt = DateTime.UtcNow,
CreatedBy = createdBy,
UpdatedBy = createdBy
};
return device;
}
///
/// 更新设备
///
public void Update(
string name,
string serialNumber,
string description,
int agentPort,
string ipAddress,
string updatedBy,
bool isEnabled = true,
bool isRunning = false)
{
Name = name;
SerialNumber = serialNumber;
Description = description;
AgentPort = agentPort;
IpAddress = ipAddress;
IsEnabled = isEnabled;
IsRunning = isRunning;
UpdatedAt = DateTime.UtcNow;
UpdatedBy = updatedBy;
}
///
/// 启用设备
///
public void Enable()
{
IsEnabled = true;
UpdatedAt = DateTime.UtcNow;
}
///
/// 禁用设备
///
public void Disable()
{
IsEnabled = false;
UpdatedAt = DateTime.UtcNow;
}
///
/// 启动设备
///
public void Start()
{
IsRunning = true;
UpdatedAt = DateTime.UtcNow;
}
///
/// 停止设备
///
public void Stop()
{
IsRunning = false;
UpdatedAt = DateTime.UtcNow;
}
}