using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace SharedLibrary.Database.Models { public class EFClient : SharedEntity { [Key] public int ClientId { get; set; } [Index(IsUnique = true)] public long NetworkId { get; set; } [Required] public int Connections { get; set; } [Required] // in seconds public int TotalConnectionTime { get; set; } [Required] public DateTime FirstConnection { get; set; } [Required] public DateTime LastConnection { get; set; } public bool Masked { get; set; } [Required] public int AliasLinkId { get; set; } [ForeignKey("AliasLinkId")] public virtual EFAliasLink AliasLink { get; set; } [Required] public Objects.Player.Permission Level { get; set; } [Required] public int CurrentAliasId { get; set; } [ForeignKey("CurrentAliasId")] public virtual EFAlias CurrentAlias { get; set; } public string Password { get; set; } public string PasswordSalt { get; set; } [NotMapped] public virtual string Name { get { return CurrentAlias.Name; } set { } } [NotMapped] public virtual int IPAddress { get { return CurrentAlias.IPAddress; } set { } } [NotMapped] public string IPAddressString => new System.Net.IPAddress(BitConverter.GetBytes(IPAddress)).ToString(); public virtual ICollection ReceivedPenalties { get; set; } public virtual ICollection AdministeredPenalties { get; set; } public EFClient() { ReceivedPenalties = new List(); AdministeredPenalties = new List(); } } }