using adas_core.Domain.Enums;
using MongoDB.Bson;

namespace adas_core.Domain.Models.MongoModels;

/// <summary>
/// Represents a device entity within the application.
/// </summary>
public class Device
{
    public ObjectId Id { get; set; }
    public List<ObjectId> PointOfCareIds { get; set; } = new(); 
    public DeviceType DeviceType { get; set; }
    public string? Name { get; set; } 
    public DateTime CreatedAt { get; set; }
    public DateTime UpdatedAt { get; set; }
    public int? Battery { get; set; }
    public string? MacAddr { get; set; }
    public string? SerialNumber { get; set; }
    public string? Color { get; set; }
    public bool Connected { get; set; }
    public bool Ready { get; set; }
    public string? Uuid { get; set; }
    public string? Key { get; set; }
    public DeviceSettings? Settings { get; set; }
}

/// <summary>
/// Represents the configuration settings for a device.
/// </summary>
public class DeviceSettings
{
    public DeviceAction? Action { get; set; }
}
/// <summary>
/// Represents an action that can be performed on or by a device.
/// </summary>
public class DeviceAction
{
    public DeviceActionType Type { get; set; }
    public ObjectId ConfigObservationId { get; set; }
    public string? AlarmName { get; set; }
    public object? ValueOnSingleClick { get; set; }
    public object? ValueOnDoubleClick { get; set; }
    public object? ValueOnHoldClick { get; set; }
}