You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
3.5 KiB
134 lines
3.5 KiB
using System.Collections.ObjectModel;
|
|
using System.Reflection.PortableExecutable;
|
|
using System.Security.Claims;
|
|
using System.Text;
|
|
using System.Xml.Linq;
|
|
using static System.Net.Mime.MediaTypeNames;
|
|
|
|
namespace Model
|
|
{
|
|
public class User
|
|
{
|
|
public string Id
|
|
{
|
|
get => id;
|
|
private init
|
|
{
|
|
if (string.IsNullOrWhiteSpace(value))
|
|
{
|
|
id = "Unknown";
|
|
return;
|
|
}
|
|
id = value;
|
|
}
|
|
}
|
|
private readonly string id = null!;
|
|
|
|
public string Pseudo
|
|
{
|
|
get => pseudo;
|
|
set
|
|
{
|
|
if (value == null)
|
|
{
|
|
pseudo = "";
|
|
return;
|
|
}
|
|
pseudo = value;
|
|
}
|
|
}
|
|
private string pseudo = "";
|
|
|
|
public string Mail
|
|
{
|
|
get => mail;
|
|
set
|
|
{
|
|
if (value == null)
|
|
{
|
|
mail = "";
|
|
return;
|
|
}
|
|
mail = value;
|
|
}
|
|
}
|
|
private string mail = "";
|
|
|
|
public string Password
|
|
{
|
|
get => password;
|
|
set
|
|
{
|
|
if (value == null)
|
|
{
|
|
password = "";
|
|
return;
|
|
}
|
|
password = value;
|
|
}
|
|
}
|
|
private string password = "";
|
|
|
|
public DateTime CreationDate { get; set; }
|
|
|
|
public LargeImage Image { get; set; }
|
|
public int AllCoins { get; set; }
|
|
|
|
public User(string id, string pseudo, string mail, string password, DateTime date, string image = "", int allCoins = 0)
|
|
{
|
|
Id = id;
|
|
Pseudo = pseudo;
|
|
Mail = mail;
|
|
Password = password;
|
|
Image = new LargeImage(image);
|
|
AllCoins = allCoins;
|
|
Groups = new ReadOnlyCollection<Group>(groups);
|
|
}
|
|
|
|
public ReadOnlyCollection<Group> Groups { get; private set; }
|
|
private List<Group> groups = new();
|
|
|
|
public bool AddGroup(Group group)
|
|
{
|
|
if (groups.Contains(group))
|
|
return false;
|
|
groups.Add(group);
|
|
return true;
|
|
}
|
|
|
|
public bool RemoveSkin(Group group)
|
|
=> groups.Remove(group);
|
|
|
|
public override bool Equals(object? obj)
|
|
{
|
|
if (ReferenceEquals(obj, null)) return false;
|
|
if (ReferenceEquals(obj, this)) return true;
|
|
if (GetType() != obj.GetType()) return false;
|
|
return Equals(obj as User);
|
|
}
|
|
|
|
public override int GetHashCode()
|
|
=> Id.GetHashCode() % 997;
|
|
|
|
public bool Equals(User? other)
|
|
=> Id.Equals(other?.Id);
|
|
|
|
public override string ToString()
|
|
{
|
|
StringBuilder sb = new StringBuilder($"{Id} ({Mail})");
|
|
if (!string.IsNullOrWhiteSpace(Image.Base64))
|
|
{
|
|
sb.AppendLine($"\t{Image.Base64}");
|
|
}
|
|
if (Groups.Any())
|
|
{
|
|
sb.AppendLine("\tGroup:");
|
|
foreach (var group in Groups)
|
|
{
|
|
sb.AppendLine($"\t\t{group.Id} - {group.Name}");
|
|
}
|
|
}
|
|
return sb.ToString();
|
|
}
|
|
}
|
|
} |