using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Data.Models.Client
{
public class EFClient : SharedEntity
{
public enum Permission
{
///
/// client has been banned
///
Banned = -1,
///
/// default client state upon first connect
///
User = 0,
///
/// client has been flagged
///
Flagged = 1,
///
/// client is trusted
///
Trusted = 2,
///
/// client is a moderator
///
Moderator = 3,
///
/// client is an administrator
///
Administrator = 4,
///
/// client is a senior administrator
///
SeniorAdmin = 5,
///
/// client is a owner
///
Owner = 6,
///
/// not used
///
Creator = 7,
///
/// reserved for default account
///
Console = 8
}
[Key]
public int ClientId { get; set; }
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 Reference.Game GameName { get; set; } = Reference.Game.UKN;
public bool Masked { get; set; }
[Required]
public int AliasLinkId { get; set; }
[ForeignKey("AliasLinkId")]
public virtual EFAliasLink AliasLink { get; set; }
[Required]
public 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; }
// list of meta for the client
public virtual ICollection Meta { get; set; }
public virtual ICollection ReceivedPenalties { get; set; }
public virtual ICollection AdministeredPenalties { get; set; }
}
}