using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.Design; using System.Data; using System.Linq; using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; namespace Biblioteque_de_Class { [DataContract(IsReference = true)] public class Database { [DataMember] private List DefaultLogoList; [DataMember] private List ThemeList; [DataMember] private List UserList; [DataMember] private Dictionary> AddedThemeList; public Database() { DefaultLogoList = new List(); ThemeList = new List(); UserList = new List(); AddedThemeList = new Dictionary>(); } public List GetDefaultLogoList() { return DefaultLogoList; } public List GetThemeList() { return ThemeList; } public List GetUserList() { return UserList; } public Dictionary> GetAddedThemeFromUser() { return AddedThemeList; } public void SetDefaultLogoList(List defaultLogoList) { DefaultLogoList = defaultLogoList; } public void SetDefaultThemeList(List defaultThemeList) { ThemeList = defaultThemeList; } /// /// recherche un utilisateur dans la liste d'utilisateur /// public List SearchUser(string name) { List searchedUsers = new List(); string search = name.ToLower(); searchedUsers.AddRange(UserList.Where( user => user.GetUsername().ToLower().Contains(search))); return searchedUsers; } /// /// récupérer le lien d'un logo /// public string? GetLogoLink(string name) { foreach (Logo logo in DefaultLogoList) { if (logo.GetName() == name) { return logo.GetLogoLink(); } } throw new NotFoundException("No logo link found."); } /// /// récupérer un utilisateur /// public User GetUser(string name) { foreach (User user in UserList) { if (user.GetUsername() == name) { return user; } } throw new AlreadyUsedException("No user found with this username."); } /// /// comparer le mot de passe entré avec celui de l'utilisateur /// public static bool ComparePassword(User user, string? password) => user.GetPassword() == password; /// /// rechercher un mail dans la liste d'utilisateur /// public bool FindEmail(string email) { foreach (User user in UserList) { if (string.Equals(user.GetEmail(), email)) { return true; } } return false; } /// /// ajouter un utilisateur dans la liste d'utilisateur /// public void AddUser(User user) { foreach (User existingUser in UserList) { if (existingUser.GetUsername() == user.GetUsername()) { throw new AlreadyUsedException("Username already used."); } else if (existingUser.GetEmail() == user.GetEmail()) { throw new AlreadyUsedException("Email already used."); } } UserList.Add(user); } /// /// supprimer un utilisateur dans la liste d'utilisateur /// public void RemoveUser(User user) { if (UserList.Contains(user)) { UserList.Remove(user); } else { throw new NotFoundException("User not found."); } } /// /// ajouter un theme dans la liste de theme /// public void AddTheme(Theme theme) { foreach (Theme existingTheme in ThemeList) { if (existingTheme.GetName() == theme.GetName()) { throw new AlreadyUsedException("Theme already used."); } } ThemeList.Add(theme); } /// /// supprimer un theme dans la liste de theme /// public void RemoveTheme(Theme theme) { if (ThemeList.Contains(theme)) { if (theme.GetName().Length > 6 && theme.GetName()[..6] != "Static" ) { throw new AlreadyUsedException("This theme is used a default theme."); } ThemeList.Remove(theme); } else { throw new NotFoundException("Theme not found."); } } /// /// récupérer un theme /// public Theme GetTheme(string name) { foreach (Theme theme in ThemeList) { if (theme.GetName() == name) { return theme; } } throw new NotFoundException("No theme found with this name."); } /// /// modifier le nom d'un theme /// public void ModifyThemeName(Theme theme, string newName) { foreach (Theme existingTheme in ThemeList) { if (existingTheme.GetName() == theme.GetName()) { existingTheme.SetName(newName); return; } } throw new NotFoundException("Theme not found."); } /// /// modifier la liste de couleur d'un theme /// public void ModifyThemeColorList(Theme theme, List newColorList) { foreach (Theme existingTheme in ThemeList) { if (existingTheme.GetName() == theme.GetName()) { for (int i = 0; i < 3; i++) { existingTheme.ChangeColor(existingTheme.GetColor(i), newColorList[i]); } return; } } } public List AddedThemeOfOneUser(User user) { return GetAddedThemeFromUser()[user]; } } }