Implémentation Serialisation/Deserialisation XML de User et correction bug Program.cs
continuous-integration/drone/push Build is passing Details

pull/32/head
Nicolas BLONDEAU 2 years ago
parent 76c634e25d
commit a69d8bb899

@ -8,8 +8,8 @@ using System.Reflection.Metadata.Ecma335;
using System.Reflection.PortableExecutable;
// Déclaration des Managers (et de leur méthode de sauvegarde)
UserManager userMngr = new UserManager(new LoaderStub());
MonsterManager monsterMngr = new MonsterManager(new LoaderStub());
UserManager userMngr = new UserManager(new LoaderXML());
//MonsterManager ub = new MonsterManager(new LoaderStub());
//======================================= Fonctions d'affichage ============================================//
@ -49,7 +49,7 @@ void menuAccueil(){
do
{
choix = ConsoleHelper.MultipleChoice("Menu principal", true,
"Connexion", "Inscription", "Continuer en tant qu'invité", "Quitter l'application");
"Connexion", "Inscription", "Continuer en tant qu'invité", "Quitter l'application", "[TEST] - LoadUsers", "[TEST] - LoadUsers");
//Traitement du choix de l'utilisateur
switch (choix)
@ -98,11 +98,11 @@ void menuAccueil(){
int menuConnexion()
{
string? id, psswd;
string id, psswd;
int nbTries = 1; // Initialise le nombre d'essais à 1
bool exists = false;
while (exists!)
while (!exists)
{
if (nbTries > 3) // Si il y a eu plus de 3 essais effectués
{
@ -136,7 +136,7 @@ int menuConnexion()
continue;
}
exists = ub.checkIfExists(id, psswd);
exists = userMngr.checkIfExists(id, psswd);
if ( !exists ) // Si le nom d'utilisateur ou le mot de passe ne correspondent pas,
// ou s'ils ne sont pas présent dans la base de données.
{
@ -208,7 +208,7 @@ int menuInscription()
continue;
}
if(ub.checkIfPseudoExists(pseudo))
if(userMngr.checkIfPseudoExists(pseudo))
{
Console.Clear();
ConsoleHelper.displayTitle("Inscription", true);
@ -217,7 +217,7 @@ int menuInscription()
System.Threading.Thread.Sleep(1500);
n++;
}
else if (ub.addUser(pseudo, nom, prenom, mdp))
else if (userMngr.addUser(pseudo, nom, prenom, mdp))
{
break;
}
@ -279,6 +279,7 @@ void menuMontres()
//======================================= Fonctions d'affichage ============================================//
void displayAllMonsters()
{
/*
ConsoleHelper.displayTitle("Index des monstres - Affichage des monstres", true);
displayAllMonstersLegend();
Console.WriteLine();
@ -303,7 +304,7 @@ void displayAllMonsters()
Console.ResetColor();
continue;
}
}
}*/
}
void displayAllMonstersLegend()
@ -324,7 +325,7 @@ void displayAllMonstersLegend()
// Fonction de recherche de monstre, mise à jour de la liste à chaque touche appuyée
void rechercheMonstre()
{
{/*
List<Monstre> m;
Console.Clear();
ConsoleKeyInfo carac;
@ -358,7 +359,7 @@ void rechercheMonstre()
carac = Console.ReadKey(true);
}
writeLineError("Retour à la page précédente...");
Thread.Sleep(1000);
Thread.Sleep(1000);*/
}

@ -9,7 +9,8 @@ namespace Persistance
{
public interface IUserDataManager
{
void saveUsers(List<User> users);
List<User> loadUsers();
//A CHANGER VISIBILITEE -> pour pas que tout le monde puisse load et save :)
public void saveUsers(List<User> users);
public List<User> loadUsers();
}
}

@ -4,29 +4,129 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.Serialization;
using System.Xml;
using System.IO;
using System.Collections.ObjectModel;
using static System.Net.Mime.MediaTypeNames;
namespace Persistance
{
public class LoaderXML : IUserDataManager, IMonsterDataManager
{
List<Monstre> IMonsterDataManager.loadMonsters()
static string fichierXML = "users.xml";
/*
#region SauvegardeUser
public static void sauvegardeUserXML(List<User>) //Fonction de sauvegarde fonctionnelle si on enlève loadUsers car conflit en les deux
{
throw new NotImplementedException();
User test = new User("DedeDu42", "dede", "dodo", "mdp", new List<Monstre> { });
Directory.SetCurrentDirectory(Path.Combine(Directory.GetCurrentDirectory(), "../../../../Persistance/saves/")); // Setup le chemin d'accès
var serialiserXML = new DataContractSerializer(typeof(User));
#region Serialisation
XmlWriterSettings xmlSettings = new XmlWriterSettings() { Indent = true }; // Pour avoir le format xml dans le fichier ( indentation etc... )
using (TextWriter tw = File.CreateText(fichierXML))
{
using (XmlWriter writer = XmlWriter.Create(tw, xmlSettings))
{
serialiserXML.WriteObject(writer, test);
}
}
#endregion
#region Deserialisation
User user2;
using (Stream s = File.OpenRead(fichierXML))
{
user2 = serialiserXML.ReadObject(s) as User;
}
#endregion
#region AffichageTest
Console.WriteLine(user2.Prenom);
Console.WriteLine(user2.Nom);
Console.WriteLine(user2.Pseudo);
Console.WriteLine(user2.monstresDejaVu);
#endregion
#endregion
}
*/
public static void sauvegarderListUsers()
{
List<User> IUserDataManager.loadUsers()
}
List<Monstre> IMonsterDataManager.loadMonsters()
{
throw new NotImplementedException();
}
/// <summary>
/// Enregistre les données dans un fichier XML
/// CORECTION: à adapter en fonction de IUserDataManager mais sinon fonctionnelle
/// </summary>
void IMonsterDataManager.saveMonsters(List<Monstre> monstres)
{
throw new NotImplementedException();
}
void IUserDataManager.saveUsers(List<User> users)// Serialise correctement juste voir comment l'appelé en fonction de IUserDataManager
{
Directory.SetCurrentDirectory(Path.Combine(Directory.GetCurrentDirectory(), "../../../../Persistance/saves/")); // Setup le chemin d'accès
var serialiserXML = new DataContractSerializer(typeof(List<User>));
#region Serialisatin
XmlWriterSettings xmlSettings = new XmlWriterSettings() { Indent = true }; // Pour avoir le format xml dans le fichier ( indentation etc... )
using (TextWriter tw = File.CreateText(fichierXML))
{
using (XmlWriter writer = XmlWriter.Create(tw, xmlSettings))
{
serialiserXML.WriteObject(writer, users);
}
}
#endregion
//throw new NotImplementedException();
}
void IUserDataManager.saveUsers(List<User> users)
public List<User> loadUsers()
{
throw new NotImplementedException();
#region Deserialisation
var serialiserXML = new DataContractSerializer(typeof(List<User>));
List<User> users;
using (Stream s = File.OpenRead(fichierXML))
{
users = serialiserXML.ReadObject(s) as List<User>;
}
#endregion
#region AffichageTest
foreach (User u in users)
{
Console.WriteLine(u.Pseudo);
Console.WriteLine(u.Prenom);
}
return users;
#endregion
}
}
}

@ -32,15 +32,15 @@ namespace Persistance
{
}
//CHANGER VISIBILITE CAR ATTENTION
void IUserDataManager.saveUsers(List<User> users)
{
Pers.saveUsers(users);
}
List<User> IUserDataManager.loadUsers()
{
throw new NotImplementedException();
return Pers.loadUsers();
}
/// <summary>

Loading…
Cancel
Save