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.
notus/notus/Notus_Console/Program.cs

1147 lines
50 KiB

using Biblioteque_de_Class;
using Notus_Persistance;
using System.ComponentModel.DataAnnotations;
using System;
using System.Collections;
using System.Security.Cryptography;
using System.Text;
// load database
PersistenceManager managerLoad = new(new ToXML());
Database db = managerLoad.LoadDatabaseData();
//save database
PersistenceManager managerSave = new(new ToXML());
// initialization zone==============================================================================
bool arreter = true;
bool continuerboucle = false;
bool menu = true, connection = false, inscription = false;
bool note=false, tags=false, para=false, paraCompte=false, theme=false;
// déclaration d'un user qui sera utiliser pour servir de personne connecté dans l'app
User u = new("", "", "");
User uvide = new("", "", "") { IsConnected = false };
// déclaration d'une note qui sera utiliser pour servir de note selectionnée
Note n = new(uvide.NoteList.Count,"","",uvide);
List<Note> researchlist = new();
/*
* starting menu:
* connection
* inscription
*
* menu principal:
* note (créer, modifier, supprimer, partager, rechercher)
* tags (créer, modifier, supprimer)
* parametre (compte (modifier, supprimer), theme ( créer, modifier, supprimer))
* se déconnecter
*/
// factorisation zone ================================================================================
// pour faire un choix par defaut non
bool Choix_DefaultNon()
{
continuerboucle = false;
while (!continuerboucle)
{
Console.WriteLine("\nContinuer ? (o/N)");
switch (Console.ReadLine())
{
case "O":
return true;
case null:
return false;
case "o":
return true;
case "n":
return false;
default:
Console.WriteLine("\nEntrez un choix valide.\n");
continuerboucle = true;
break;
}
}
return false;
}
// pour selectionner une note dans le menu note
bool Choix_Note()
{
foreach (Note notetodisplay in u.NoteList)
{
Console.WriteLine("- " + notetodisplay.Name);
}
continuerboucle = true;
while (continuerboucle)
{
Console.WriteLine("Quel note voulez vous selectionner ? (entrez le nom de la note complet)");
string? nom = Console.ReadLine();
if (nom == null) { continue; }
foreach (Note note in u.NoteList)
{
if (note.Name == nom)
{
n = note;
return true;
}
}
Console.WriteLine("\nEntrez un choix valide.\n");
Console.WriteLine("Voulez vous reessayer ? (o/N)");
continuerboucle = Choix_DefaultNon();
}
return false;
}
bool CouleurValide(string couleur)
{
int correct = 0;
if (couleur[0] == '#' && couleur.Length == 7)
{
for (int i = 1; i < 7-1; i++)
{
if (couleur[i] >= '0' && couleur[i] <= '9' || couleur[i] >= 'A' && couleur[i] <= 'F' || couleur[i] >= 'a' && couleur[i] <= 'f')
{
correct++;
}
}
if (correct == 6)
{
return true;
}
}
return false;
}
bool IsValidEmail(string email)
{
return new EmailAddressAttribute().IsValid(email);
}
List<string> Choix_CouleursToTheme()
{
Console.WriteLine("Choisez les couleurs respetivement fond, text, boutton en hexa (ex: #FFFFFF) séparé par des epaces");
List<string> listcouleurs = new();
string? couleur = Console.ReadLine();
if (couleur == null) { return new List<string>(); }
listcouleurs = couleur.Split(' ').ToList();
foreach (string coul in listcouleurs)
{
if (!CouleurValide(coul))
{
Console.WriteLine("\nEntrez un choix valide. pour "+ coul +"\n");
return new List<string>();
}
}
return listcouleurs;
}
// program zone =====================================================================================
while (arreter)
{
//starting menu
while (menu)
{
Console.WriteLine("\n|--------------------------------------|");
Console.WriteLine("| |");
Console.WriteLine("| starting menu |");
Console.WriteLine("| |");
Console.WriteLine("|--------------------------------------|--------|");
Console.WriteLine("| |");
Console.WriteLine("| 1 / - connection - |");
Console.WriteLine("| 2 / - inscription - |");
Console.WriteLine("| 3 / - arreter le program - |");
Console.WriteLine("| |");
Console.WriteLine("|-----------------------------------------------|\n");
Console.WriteLine("rentrez votre choix.");
switch (Console.ReadLine())
{
case "1": ///Connexion
connection = true; break;
case "2":///Creer un compte
inscription = true; break;
case "3":///Arreter le program
arreter = false;
menu = false;
break;
default:
Console.WriteLine("\nEntrez un choix valide.\n");
break;
}
//connection
while (connection)
{
connection = false;
Console.WriteLine("\nEntrez un nom : ");
string? nom = Console.ReadLine();
if (nom == null) { continue; }
Console.WriteLine("\nEntrez un password :");
string? password = Console.ReadLine();
if (password == null) { continue; }
//test si l'utilisateur existe et si le password est bon
try
{
u = db.GetUser(nom);
}
catch (AlreadyUsedException ex)
{
Console.WriteLine(ex.Message);
connection = true;
}
if (!connection)
{
if (Database.ComparePassword(u, HashCodeModel.GetSHA256Hash(password).ToString()))
{
u.IsConnected = true;
Console.WriteLine("\nConnection réussie !\n");
menu = false;
break;
}
else
{
Console.WriteLine("\nWrong PassWord !\n");
connection = true;
continuerboucle = true;
u = uvide;
}
}
// demander si il veut continuer de ce connecter
connection = Choix_DefaultNon();
}
//inscription
while (inscription)
{
Console.WriteLine("\nEntrez un nom :");
string? nom = Console.ReadLine();
if (nom == null) { continue; }
Console.WriteLine("\nEntrez un password :");
string? password = Console.ReadLine();
//test si l'utilisateur n'est pas déjà dans la base de donnée et ajout dans la base de donnée
if (password == null) { continue; }
try
{
u = db.GetUser(nom);
}
catch (AlreadyUsedException)
{
u = new User(nom, "", HashCodeModel.GetSHA256Hash(password).ToString());
db.AddUser(u);
db.GetUser(nom).IsConnected = true;
Console.WriteLine("\nConnection réussie !\n");
menu = false;
break;
}
Console.WriteLine("\nNom d'utilisateur déjà utilisé. \n");
// demander si il veut continuer de ce connecter
inscription = Choix_DefaultNon();
}
}
//menu principal
while (u.IsConnected)
{
Console.WriteLine("\n|--------------------------------------|");
Console.WriteLine("| |");
Console.WriteLine("| menu |");
Console.WriteLine("| |");
Console.WriteLine("|--------------------------------------|--------|");
Console.WriteLine("| |");
Console.WriteLine("| 1/ - note - |");
Console.WriteLine("| 2/ - tags - |");
Console.WriteLine("| 3/ - paramêtres - |");
Console.WriteLine("| 4/ - se déconnecter - |");
Console.WriteLine("| |");
Console.WriteLine("|-----------------------------------------------|\n");
Console.WriteLine("rentrez votre choix.");
switch (Console.ReadLine())
{
case "1":
note = true;
foreach (Note notetodisplay in u.NoteList)
{
Console.WriteLine("- " + notetodisplay.Name);
}
break;
case "2":
tags = true;
break;
case "3":
para = true;
break;
case "4":
menu = true;
Console.WriteLine("\ndéconnecté! \n");
u.IsConnected = false;
u = uvide;
break;
default:
Console.WriteLine("\nEntrez un choix valide.\n");
break;
}
while (note)
{
Console.WriteLine("\n|--------------------------------------|");
Console.WriteLine("| |");
Console.WriteLine("| menu - note |");
Console.WriteLine("| |");
Console.WriteLine("|--------------------------------------|--------|");
Console.WriteLine("| |");
Console.WriteLine("| 1/ - créer une note - |");
Console.WriteLine("| 2/ - modifier une note - |");
Console.WriteLine("| 3/ - supprimer une note - |");
Console.WriteLine("| 4/ - écrire dans une note - |");
Console.WriteLine("| 5/ - ajouter une image - |");
Console.WriteLine("| 6/ - supprimer une image - |");
Console.WriteLine("| 7/ - partager note - |");
Console.WriteLine("| 8/ - supprimer collaborateur - |");
Console.WriteLine("| 9/ - ajouter un éditeur - |");
Console.WriteLine("| 10/ - supprimer un éditeur - |");
Console.WriteLine("| 11/ - ajouter tag - |");
Console.WriteLine("| 12/ - enelver tag - |");
Console.WriteLine("| 13/ - rechercher une note - |");
Console.WriteLine("| 14/ - retour - |");
Console.WriteLine("| |");
Console.WriteLine("|-----------------------------------------------|\n");
Console.WriteLine("note actuelle : " + n.Name);
Console.WriteLine("rentrez votre choix.");
switch (Console.ReadLine())
{
case "1":
Console.WriteLine("\nEntrez le nom de la note :");
string? wantedNameNote = Console.ReadLine();
if (wantedNameNote == null) { continue; }
try
{
n = u.CreateNote(wantedNameNote, "");
}catch(AlreadyUsedException ex)
{
Console.WriteLine(ex.Message);
break;
}
Console.WriteLine("\nNote créée !\n");
break;
case "2":
if (!Choix_Note()) { break; }
Console.WriteLine("Voulez vous modifier le nom de la note ? (o/N)");
if (Choix_DefaultNon())
{
Console.WriteLine("\nEntrez le nouveau nom de la note :");
string? wantedNameNote2 = Console.ReadLine();
if (wantedNameNote2 == null) { continue; }
try
{
n.ChangeName(u, wantedNameNote2);
}
catch (NotAllowedException ex)
{
Console.WriteLine(ex.Message);
break;
}
Console.WriteLine("\nNom modifié !\n");
}
break;
case "3":
if (!Choix_Note()) { break; }
Console.WriteLine("Voulez vous vraiment supprimer la note ? (o/N)");
if (Choix_DefaultNon())
{
try
{
u.DeleteNote(n);
}
catch (NotAllowedException ex)
{
Console.WriteLine(ex.Message);
break;
}
catch (NotFoundException ex)
{
Console.WriteLine(ex.Message);
break;
}
Console.WriteLine("\nNote supprimée !\n");
}
break;
case "4":
if (!Choix_Note()) { break; }
Console.WriteLine(n.Text); // affiche le texte de la note
if (!n.VerifyPrivilege(u)) { break; }
Console.WriteLine("\nEntrez le texte à ajouter");
string? wantedTextNote = Console.ReadLine();
if (wantedTextNote == null) { continue; }
try
{
n.AddText(u, wantedTextNote);
}
catch(NotAllowedException ex)
{
Console.WriteLine(ex.Message);
break;
}
break;
case "5":
if (!Choix_Note()) { break; }
if (!n.VerifyPrivilege(u)) { break; }
Console.WriteLine("Entrer le chemin de l'image :");
string? wantedimage = Console.ReadLine();
if (wantedimage == null) { continue; }
n.AddImage(wantedimage, new() { 0, 0 });
break;
case "6":
if (!Choix_Note()) { break; }
if(!n.VerifyPrivilege(u)) { break; }
foreach (NoteImage image in n.ImageList)
{
Console.WriteLine(image.Name + " -> " + image.ImageLink + "\n");
}
Console.WriteLine("entrez le numéro de l'image à supprimer :");
string? wantedimagetodelete = Console.ReadLine();
if(wantedimagetodelete == null) { continue; }
try
{
n.RemoveImage(wantedimagetodelete);
}
catch(NotFoundException ex)
{
Console.WriteLine(ex.Message);
break;
}
break;
case "7":
if (!Choix_Note()) { break; }
if (!n.VerifyOwner(u)) { continue; }
User wantedUser;
Console.WriteLine("\nEntrez le nom de l'utilisateur à qui partager la note :");
string? wantedNameUser = Console.ReadLine();
if (wantedNameUser == null) { continue; }
try
{
wantedUser = db.SearchUser(wantedNameUser);
}
catch (NotFoundException ex)
{
Console.WriteLine(ex.Message);
break;
}
try
{
n.AddCollaborator(u, wantedUser);
}
catch (NotAllowedException ex)
{
Console.WriteLine(ex.Message);
break;
}
break;
case "8": //supp collab
User wantedUser2;
if (!Choix_Note()) { break; }
if (!n.VerifyOwner(u)) { continue; }
Console.WriteLine("\n Entrez le nom de l'utilisateur qui doit etre supprimer : ");
string? wantedNameUser2 = Console.ReadLine();
if (wantedNameUser2 == null) { continue; }
try
{
wantedUser2 = db.SearchUser(wantedNameUser2);
}
catch(NotFoundException ex)
{
Console.WriteLine(ex.Message);
break;
}
try
{
n.RemoveCollaborator(u, wantedUser2);
}
catch(NotAllowedException ex)
{
Console.WriteLine(ex.Message);
break;
}
break;
case "9":// add edit
if (!Choix_Note()) { break; }
if (!n.VerifyOwner(u)) { continue; }
foreach (User user in n.Collaborators)
{
if( n.Editors.Contains(user)) { continue; }
Console.WriteLine( " - " + user.Username );
}
User UserToAddEdit;
Console.WriteLine("Entrer le pseudo de l'utilisateur voulu");
string? wantedNameUser3 = Console.ReadLine();
if (wantedNameUser3 == null) { continue; }
try
{
UserToAddEdit = db.SearchUser(wantedNameUser3);
}catch(NotFoundException ex)
{
Console.WriteLine(ex.Message);
break;
}
try
{
n.AddEditor(u, UserToAddEdit);
}
catch(AlreadyExistException ex)
{
Console.WriteLine(ex.Message);
break;
}
break;
case "10":// supp edit
if (!Choix_Note()) { break; }
if (!n.VerifyOwner(u)) { continue; }
User UserToDeleteEdit;
Console.WriteLine("Entrer le pseudo de l'utilisateur voulu");
string? wantedNameUser4 = Console.ReadLine();
if (wantedNameUser4 == null) { continue; }
try
{
UserToDeleteEdit = db.SearchUser(wantedNameUser4);
}
catch (NotFoundException ex)
{
Console.WriteLine(ex.Message);
break;
}
try
{
n.RemoveEditor(u, UserToDeleteEdit);
}
catch (NotFoundException ex)
{
Console.WriteLine(ex.Message);
break;
}
break;
case "11":
Tags tagtoadd;
if (!Choix_Note()) { break; }
Console.WriteLine("\nEntrez le nom du tag à ajouter :");
string? wantedNameTag2 = Console.ReadLine();
if (wantedNameTag2 == null) { continue; }
try
{
tagtoadd = u.GetTagByName(wantedNameTag2);
}
catch (NotFoundException ex)
{
Console.WriteLine(ex.Message);
break;
}
try
{
u.AddTagFromNoteList(n, tagtoadd);
}
catch (NotAllowedException ex)
{
Console.WriteLine(ex.Message);
break;
}
break;
case "12":// enelver tag
if (!Choix_Note()) { break; }
Console.WriteLine("\n Entrez le nom du tag à supprimer");
string? wantedNameTag3 = Console.ReadLine();
if (wantedNameTag3 == null) { continue; }
try
{
tagtoadd = u.GetTagByName(wantedNameTag3);
}
catch (NotFoundException ex)
{
Console.WriteLine(ex.Message);
break;
}
try
{
u.RemoveTagFromNoteList(n, tagtoadd);
}
catch (NotAllowedException ex)
{
Console.WriteLine(ex.Message);
break;
}
break;
case "13":
List<Note> wantedNotes = new List<Note>();
Console.WriteLine("\nEntrez le nom de la note à rechercher :");
string? wantedNameNote3 = Console.ReadLine();
if (wantedNameNote3 == null) { continue; }
Console.WriteLine("Voulez vous faire une recherche avancé ? (o/N)");
if (Choix_DefaultNon())
{
Console.WriteLine("Voulez vous chercher dans les favoris ? (o/N)");
if (Choix_DefaultNon())
{
wantedNotes = u.FavList;
}
else
{
wantedNotes = u.NoteList;
}
Console.WriteLine("Voulez vous chercher par date seul '1' ou par fourchette de date '2' ? autre pour continuer");
switch (Console.ReadLine())
{
case "1":
Console.WriteLine("Entrez la date de la note à rechercher :");
string? line = Console.ReadLine();
if (line == null) { continue; }
DateOnly date1;
while (!DateOnly.TryParseExact(line, "dd/MM/yyyy", null, System.Globalization.DateTimeStyles.None, out date1))
{
Console.WriteLine("Invalid date, please retry");
line = Console.ReadLine();
}
wantedNotes = u.SearchNoteByDate(wantedNotes, wantedNameNote3, date1, date1);
if (wantedNotes == null) { Console.WriteLine("Aucun resultat !"); break; }
foreach (Note notetodisplay in wantedNotes)
{
Console.WriteLine(" - " + notetodisplay.Name);
}
break;
case "2":
Console.WriteLine("Entrez la date de début de la fourchette de date de la note à rechercher :");
string? line2 = Console.ReadLine();
if (line2 == null) { continue; }
DateOnly date2;
while (!DateOnly.TryParseExact(line2, "dd/MM/yyyy", null, System.Globalization.DateTimeStyles.None, out date2))
{
Console.WriteLine("Invalid date, please retry");
line2 = Console.ReadLine();
}
Console.WriteLine("Entrez la date de début de la fourchette de date de la note à rechercher :");
string? line3 = Console.ReadLine();
if (line3 == null) { continue; }
DateOnly date3;
while (!DateOnly.TryParseExact(line3, "dd/MM/yyyy", null, System.Globalization.DateTimeStyles.None, out date3))
{
Console.WriteLine("Invalid date, please retry");
line3 = Console.ReadLine();
}
wantedNotes = u.SearchNoteByDate(wantedNotes, wantedNameNote3, date2, date3);
if (wantedNotes == null) { Console.WriteLine("Aucun resultat !"); break; }
foreach (Note notetodisplay in wantedNotes)
{
Console.WriteLine(" - " + notetodisplay.Name);
}
break;
default:
break;
}
Console.WriteLine("\n Voulez vous rechercher par tag (o/N) ? autre pour continuer");
if (Choix_DefaultNon())
{
Console.WriteLine("Plusieurs tags ? (o/N)");
if (Choix_DefaultNon())
{
Console.WriteLine("choisissez les tags à rechercher séparé par un espace :");
string? tagstoresearch = Console.ReadLine();
if (tagstoresearch == null) { continue; }
List<string> listoftagtoresearch = tagstoresearch.Split(' ').ToList();
}
else
{
Console.WriteLine("choisissez le tags à rechercher");
string? tagstoresearch = Console.ReadLine();
if (tagstoresearch == null) { continue; }
if (wantedNotes == null) { Console.WriteLine("Aucun resultat !"); break; }
try
{
wantedNotes = u.SearchNoteByTag(wantedNotes, tagstoresearch);
}
catch (Exception ex) { Console.WriteLine(ex.Message); break; }
}
if (wantedNotes == null) { Console.WriteLine("Aucun resultat !"); break; }
foreach (Note notetodisplay in wantedNotes)
{
Console.WriteLine(" - " + notetodisplay.Name);
}
}
}
else
{
wantedNotes = u.SearchNoteByName(wantedNotes, wantedNameNote3);
if (wantedNotes == null) { Console.WriteLine("Aucun resultat !"); break; }
foreach (Note notetodisplay in wantedNotes)
{
Console.WriteLine(" - " + notetodisplay.Name);
}
}
break;
case "14":
note = false;
break;
default:
Console.WriteLine("\nEntrez un choix valide.\n");
break;
}
}
while (tags)
{
Console.WriteLine("\n|--------------------------------------|");
Console.WriteLine("| |");
Console.WriteLine("| menu - tags |");
Console.WriteLine("| |");
Console.WriteLine("|--------------------------------------|--------|");
Console.WriteLine("| |");
Console.WriteLine("| 1/ - créer tag - |");
Console.WriteLine("| 2/ - modifier un tag - |");
Console.WriteLine("| 3/ - supprimer tag - |");
Console.WriteLine("| 4/ - retour - |");
Console.WriteLine("| |");
Console.WriteLine("|-----------------------------------------------|\n");
Console.WriteLine("rentrez votre choix.");
switch (Console.ReadLine())
{
case "1":
Console.WriteLine("\nEntrez le nom du tag à créer :");
string? wantedNameTag = Console.ReadLine();
if (wantedNameTag == null) { continue; }
Console.WriteLine("\nEntrez la couleur du tag à créer :");
string? wantedColorTag = Console.ReadLine();
if (wantedColorTag == null) { continue; }
if (!CouleurValide(wantedColorTag))
{
Console.WriteLine("\nEntrez une couleur valide.\n");
break;
}
try
{
u.CreateTag(wantedNameTag ,wantedColorTag);
}
catch (NotAllowedException ex)
{
Console.WriteLine(ex.Message);
break;
}
break;
case "2":
Tags tagtoedit;
Console.WriteLine("\nEntrez le nom du tag à modifier :");
string? wantedNameTag2 = Console.ReadLine();
if (wantedNameTag2 == null) { continue; }
try
{
tagtoedit = u.GetTagByName(wantedNameTag2);
}
catch (NotFoundException ex)
{
Console.WriteLine(ex.Message);
break;
}
Console.WriteLine("Voulez vous modifier le nom du tag ? (o/N)");
if (Choix_DefaultNon())
{
Console.WriteLine("\nEntrez le nouveau nom du tag :");
string? wantedNewNameTag = Console.ReadLine();
if (wantedNewNameTag == null) { continue; }
try
{
u.EditTagName(tagtoedit, wantedNewNameTag);
}
catch (NotFoundException ex)
{
Console.WriteLine(ex.Message);
break;
}
catch(AlreadyUsedException ex)
{
Console.WriteLine(ex.Message);
break;
}
Console.WriteLine("Le nom du tag a été modifié avec succès.");
}
Console.WriteLine("Voulez vous modifier la couleur du tag ? (o/N)");
if (Choix_DefaultNon())
{
Console.WriteLine("\nEntrez la nouvelle couleur du tag :");
string? wantedNewColorTag = Console.ReadLine();
if (wantedNewColorTag == null) { continue; }
if (!CouleurValide(wantedNewColorTag))
{
Console.WriteLine("\nEntrez une couleur valide.\n");
break;
}
try
{
u.EditTagColor(tagtoedit, wantedNewColorTag);
}
catch (NotFoundException ex)
{
Console.WriteLine(ex.Message);
break;
}
Console.WriteLine("La couleur du tag a été modifiée avec succès.");
}
break;
case "3":
Tags tagToDelete;
Console.WriteLine("\nEntrez le nom du tag à supprimer :");
string? wantedNameTag3 = Console.ReadLine();
if (wantedNameTag3 == null) { continue; }
try
{
tagToDelete = u.GetTagByName(wantedNameTag3);
}
catch (NotFoundException ex)
{
Console.WriteLine(ex.Message);
break;
}
try
{
u.DeleteTag(tagToDelete);
}
catch (NotFoundException ex)
{
Console.WriteLine(ex.Message);
break;
}
break;
case "4":
tags = false;
break;
default:
Console.WriteLine("\nEntrez un choix valide.\n");
break;
}
}
while (para)
{
Console.WriteLine("\n|--------------------------------------|");
Console.WriteLine("| |");
Console.WriteLine("| menu - paramêtre |");
Console.WriteLine("| |");
Console.WriteLine("|--------------------------------------|--------|");
Console.WriteLine("| |");
Console.WriteLine("| 1/ - modifier compte - |");
Console.WriteLine("| 2/ - thèmes - |");
Console.WriteLine("| 3/ - retour - |");
Console.WriteLine("| |");
Console.WriteLine("|-----------------------------------------------|\n");
Console.WriteLine("rentrez votre choix.");
switch (Console.ReadLine())
{
case "1":
paraCompte = true;
break;
case "2":
theme = true;
break;
case "3":
para = false;
break;
default:
Console.WriteLine("\nEntrez un choix valide.\n");
break;
}
while (paraCompte)
{
Console.WriteLine("\n|--------------------------------------|");
Console.WriteLine("| |");
Console.WriteLine("| paramêtre - compte |");
Console.WriteLine("| |");
Console.WriteLine("|--------------------------------------|--------|");
Console.WriteLine("| |");
Console.WriteLine("| 1/ - modifier pseudo - |");
Console.WriteLine("| 2/ - modifier mot de passe - |");
Console.WriteLine("| 3/ - modifier l'email |");
Console.WriteLine("| 4/ - modifier l'image de profil |");
Console.WriteLine("| 5/ - supprimer le compte - |");
Console.WriteLine("| 6/ - retour - |");
Console.WriteLine("| |");
Console.WriteLine("|-----------------------------------------------|\n");
Console.WriteLine("rentrez votre choix.");
switch (Console.ReadLine())
{
case "1":
Console.WriteLine("\nEntrez votre nouveau pseudo :");
string? wantedNewPseudo = Console.ReadLine();
if (wantedNewPseudo == null) { continue; }
try
{
db.ChangeUsername(u,wantedNewPseudo);
}
catch (AlreadyUsedException ex)
{
Console.WriteLine(ex.Message);
break;
}
Console.WriteLine("Votre pseudo a été modifié avec succès.");
break;
case "2":
Console.WriteLine("\nEntrez votre nouveau mot de passe :");
string? wantedNewPassword = Console.ReadLine();
if (wantedNewPassword == null) { continue; }
try
{
u.ChangePassword(wantedNewPassword);
}
catch(NotAllowedException ex)
{
Console.WriteLine(ex.Message);
break;
}
Console.WriteLine("Votre mot de passe a été modifié avec succès.");
break;
case "3":
Console.WriteLine("\nEntrez votre nouvelle adresse email :");
string? wantedNewEmail = Console.ReadLine();
if (wantedNewEmail == null) { continue; }
if (!IsValidEmail(wantedNewEmail))
{
Console.WriteLine("\nEntrez une adresse email valide.\n");
break;
}
try
{
u.ChangeEmail(wantedNewEmail);
}
catch (AlreadyUsedException ex)
{
Console.WriteLine(ex.Message);
break;
}
break;
case "4":
Console.WriteLine("\nEntrez le chemin de votre nouvelle image de profil :");
string? wantedNewProfilePicture = Console.ReadLine();
if (wantedNewProfilePicture == null) { continue; }
if (!File.Exists(wantedNewProfilePicture))
{
Console.WriteLine("\nEntrez un chemin valide.\n");
break;
}
try
{
u.ChangeProfilePicture(wantedNewProfilePicture);
}
catch (NotFoundException ex)
{
Console.WriteLine(ex.Message);
break;
}
catch(AlreadyExistException ex)
{
Console.WriteLine(ex.Message);
break;
}
break;
case "5":
Console.WriteLine("\nÊtes-vous sûr de vouloir supprimer votre compte ? (o/N)");
if (Choix_DefaultNon())
{
try
{
db.RemoveUser(u);
}
catch (NotFoundException ex)
{
Console.WriteLine(ex.Message);
break;
}
Console.WriteLine("Votre compte a été supprimé avec succès.");
paraCompte = false;
para = false;
u = uvide;
}
break;
case "6":
paraCompte = false;
break;
default:
Console.WriteLine("\nEntrez un choix valide.\n");
break;
}
}
while (theme)
{
Console.WriteLine("\n|--------------------------------------|");
Console.WriteLine("| |");
Console.WriteLine("| paramêtre - thèmes |");
Console.WriteLine("| |");
Console.WriteLine("|--------------------------------------|--------|");
Console.WriteLine("| |");
Console.WriteLine("| 1/ - choisir un thème - |");
Console.WriteLine("| 2/ - créer un thème - |");
Console.WriteLine("| 3/ - supprimer un thème - |");
Console.WriteLine("| 4/ - modifier un thème - |");
Console.WriteLine("| 5/ - retour - |");
Console.WriteLine("| |");
Console.WriteLine("|-----------------------------------------------|\n");
Console.WriteLine("rentrez votre choix.");
switch (Console.ReadLine())
{
case "1":
Theme ThemetoSelect;
Console.WriteLine("\nEntrez le nom du thème :");
string? wantedTheme = Console.ReadLine();
if (wantedTheme == null) { continue; }
try
{
ThemetoSelect = db.GetTheme(wantedTheme);
}
catch (NotFoundException)
{
try
{
ThemetoSelect = u.GetTheme(wantedTheme);
}
catch (NotFoundException ex2)
{
Console.WriteLine(ex2.Message);
break;
}
}
try
{
u.ChangeTheme(ThemetoSelect);
}
catch (AlreadyExistException ex)
{
Console.WriteLine(ex.Message);
break;
}
break;
case "2":
List<string> couleurs;
Console.WriteLine("\nEntrez le nom du thème :");
string? wantedNewTheme = Console.ReadLine();
if (wantedNewTheme == null) { continue; }
if (!db.VerifThemeNameNotTaken(wantedNewTheme))
{
Console.WriteLine("\nCe nom de thème est déjà pris.\n");
break;
}
else
{
couleurs = Choix_CouleursToTheme();
}
try
{
u.AddTheme(new Theme(wantedNewTheme, couleurs));
}catch(AlreadyExistException ex)
{
Console.WriteLine(ex.Message);
break;
}
break;
case "3":
Theme ThemeToDelete;
Console.WriteLine("\nEntrez le nom du thème :");
string? wantedThemeToDelete = Console.ReadLine();
if (wantedThemeToDelete == null) { continue; }
try
{
ThemeToDelete = u.GetTheme(wantedThemeToDelete);
}
catch (NotFoundException ex)
{
Console.WriteLine(ex.Message);
break;
}
try
{
u.RemoveTheme(ThemeToDelete);
}
catch (NotFoundException ex)
{
Console.WriteLine(ex.Message);
break;
}
break;
case "4":
Theme ThemeToModify;
Console.WriteLine("\nEntrez le nom du thème :");
string? wantedThemeToModify = Console.ReadLine();
if (wantedThemeToModify == null) { continue; }
try
{
ThemeToModify = u.GetTheme(wantedThemeToModify);
}
catch (NotFoundException ex)
{
Console.WriteLine(ex.Message);
break;
}
Console.WriteLine("\nVoules Vous changer le nom du theme : (o/N)");
if (Choix_DefaultNon())
{
Console.WriteLine("\nEntrez le nouveau nom du thème :");
string? wantedNewThemeName = Console.ReadLine();
if (wantedNewThemeName == null) { continue; }
if(!db.VerifThemeNameNotTaken(wantedNewThemeName))
{
Console.WriteLine("\nCe nom de thème est déjà pris.\n");
break;
}
try
{
u.ChangeThemeName(ThemeToModify, wantedNewThemeName);
}
catch(AlreadyExistException ex)
{
Console.WriteLine(ex.Message);
break;
}
}
Console.WriteLine("\nVoules Vous changer les couleurs du theme : (o/N)");
if (Choix_DefaultNon())
{
List<string> couleursToChange;
couleursToChange = Choix_CouleursToTheme();
try
{
u.ChangeThemeColors(ThemeToModify, couleursToChange);
}
catch (NotFoundException ex)
{
Console.WriteLine(ex.Message);
break;
}
catch (AlreadyExistException ex)
{
Console.WriteLine(ex.Message);
break;
}
}
break;
case "5":
theme = false;
break;
default:
Console.WriteLine("\nEntrez un choix valide.\n");
break;
}
}
}
}
}
managerSave.SaveDatabaseData(db);
managerSave.SaveDefaultData(db);