first commit
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
|
||||
namespace Fitness_core_BE.Models
|
||||
{
|
||||
public class AccessDevice
|
||||
{
|
||||
[Key]
|
||||
public Guid DeviceId { get; set; }
|
||||
public string DeviceName { get; set; }
|
||||
|
||||
// DEPRECATED: connection details now live on the on-prem agent (Fitness_core_BE.Models.Agent),
|
||||
// not in the cloud. Kept nullable so existing rows survive; no new code should read/write these.
|
||||
[Obsolete("Device connection details now live on the on-prem agent, not in the cloud.")]
|
||||
public string? PublicIp { get; set; }
|
||||
[Obsolete("Device connection details now live on the on-prem agent, not in the cloud.")]
|
||||
public string? Port { get; set; }
|
||||
[Obsolete("Device connection details now live on the on-prem agent, not in the cloud.")]
|
||||
public string? UserName { get; set; }
|
||||
[Obsolete("Device connection details now live on the on-prem agent, not in the cloud.")]
|
||||
public string? Password { get; set; }
|
||||
|
||||
public Guid FKClientId { get; set; }
|
||||
[ForeignKey("FKClientId")]
|
||||
public Client Client { get; set; }
|
||||
|
||||
// The agent that currently owns this LAN device. Commands are dispatched only
|
||||
// to this agent, which prevents a second agent for the same gym receiving them.
|
||||
public Guid? FKAgentId { get; set; }
|
||||
[ForeignKey(nameof(FKAgentId))]
|
||||
public Agent? Agent { get; set; }
|
||||
|
||||
// Stable serial/device identifier reported by ISAPI. Used to re-claim the same
|
||||
// cloud row after reinstalling the desktop agent instead of creating duplicates.
|
||||
[MaxLength(160)]
|
||||
public string? HardwareId { get; set; }
|
||||
|
||||
// Which Place (physical zone) this terminal sits in. Null = unscoped: reachable by
|
||||
// every plan regardless of that plan's Places (keeps pre-existing devices and
|
||||
// plans without any place restriction working unchanged). Unique when set --
|
||||
// exactly one device per place for now (see Models/Place.cs).
|
||||
public Guid? FKPlaceId { get; set; }
|
||||
[ForeignKey(nameof(FKPlaceId))]
|
||||
public Place? Place { get; set; }
|
||||
|
||||
public bool IsActive { get; set; } = true;
|
||||
public DateTime? LastSeenAt { get; set; }
|
||||
// Explicit reachability reported by the on-prem agent. LastSeenAt remains
|
||||
// the last successful terminal operation; health reports are tracked
|
||||
// separately so status does not depend on browser polling.
|
||||
public bool IsReachable { get; set; }
|
||||
public DateTime? LastHealthReportedAt { get; set; }
|
||||
public DateTime CreatedAt { get; set; }= DateTime.UtcNow;
|
||||
|
||||
[Obsolete("Device connection details now live on the on-prem agent, not in the cloud.")]
|
||||
public void SetPassword(string plainText)
|
||||
=> Password = EncryptionHelper.Encrypt(plainText);
|
||||
|
||||
[Obsolete("Device connection details now live on the on-prem agent, not in the cloud.")]
|
||||
public string GetPlainTextPassword()
|
||||
=> EncryptionHelper.Decrypt(Password!);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user