/// <summary> /// Search for an Expert data using its login. /// </summary> /// <param name="login">The login of the targeted Expert.</param> /// <returns></returns> public static Manager.ExpertManager.Expert SearchById(string login) { /* On déclare et on crée une instance des variables nécéssaires pour la recherche */ Manager.ExpertManager.Expert expert = new Manager.ExpertManager.Expert(); try { string rslt = Helper.service.LoadFile("Experts.xml").ToString(); StreamWriter sw = new StreamWriter(System.Windows.Forms.Application.StartupPath + "\\temp.xml"); sw.Write(rslt); sw.Close(); //XPathDocument XPathDocu = new XPathDocument((Stream)Helper.service.LoadFile("Experts.xml")); XPathDocument XPathDocu = new XPathDocument(System.Windows.Forms.Application.StartupPath + "\\temp.xml"); XPathNavigator Navigator; XPathNodeIterator Nodes; /* On affecte false à la variable NoMatches afin de vérifier par la suite * si la recherche a été fructueuse*/ expert.setnoMatch(false); /* On crée un navigateur */ Navigator = XPathDocu.CreateNavigator(); /* On crée ici l'expression XPath de recherche d'expert à partir du login */ string ExpXPath = "//Expert[@login='******' and status != 'Deactivated']"; /* On lance la recherche */ Nodes = Navigator.Select(Navigator.Compile(ExpXPath)); /* On vérifie si la recherche a été fructueuse */ if (Nodes.Count != 0) { Nodes.MoveNext(); // NOTE: Necéssaire pour se placer sur le noeud recherché /* Encodage des données dans la classe Expert */ expert.setId(Convert.ToInt32(Nodes.Current.GetAttribute("id", ""))); expert.setLogin(login); expert.setPassword(Nodes.Current.GetAttribute("password", "")); Nodes.Current.MoveToFirstChild(); /* On se déplace sur le premier noeud * enfant "Prenom" */ expert.setFirstName(Nodes.Current.Value); Nodes.Current.MoveToNext(); // On se déplace sur le noeud suivant "Nom" expert.setLastName(Nodes.Current.Value); Nodes.Current.MoveToNext(); expert.setEmail(Nodes.Current.Value); Nodes.Current.MoveToNext(); expert.setPhoneNumber(Nodes.Current.Value); Nodes.Current.MoveToNext(); expert.setAddress(Nodes.Current.Value); Nodes.Current.MoveToNext(); expert.setRole(Nodes.Current.Value); Nodes.Current.MoveToNext(); expert.setSpecialty(Nodes.Current.Value); Nodes.Current.MoveToNext(); expert.setStatus(Helper.StringToStatus(Nodes.Current.Value)); } /* Si aucun expert n'a été trouvé */ else { expert.setnoMatch(true); } } catch (Exception x) { expert.setnoMatch(true); } /* Renvoi de toutes les données dans une instance de la classe "Client" */ return(expert); }
/// <summary> /// Search for an Expert data using its login. /// </summary> /// <param name="login">The login of the targeted Expert.</param> /// <returns></returns> public static Manager.ExpertManager.Expert SearchById(string login) { /* On déclare et on crée une instance des variables nécéssaires pour la recherche */ Manager.ExpertManager.Expert expert = new Manager.ExpertManager.Expert(); try { string rslt = Helper.service.LoadFile("Experts.xml").ToString(); StreamWriter sw = new StreamWriter(System.Windows.Forms.Application.StartupPath + "\\temp.xml"); sw.Write(rslt); sw.Close(); //XPathDocument XPathDocu = new XPathDocument((Stream)Helper.service.LoadFile("Experts.xml")); XPathDocument XPathDocu = new XPathDocument(System.Windows.Forms.Application.StartupPath + "\\temp.xml"); XPathNavigator Navigator; XPathNodeIterator Nodes; /* On affecte false à la variable NoMatches afin de vérifier par la suite * si la recherche a été fructueuse*/ expert.setnoMatch(false); /* On crée un navigateur */ Navigator = XPathDocu.CreateNavigator(); /* On crée ici l'expression XPath de recherche d'expert à partir du login */ string ExpXPath = "//Expert[@login='******' and status != 'Deactivated']"; /* On lance la recherche */ Nodes = Navigator.Select(Navigator.Compile(ExpXPath)); /* On vérifie si la recherche a été fructueuse */ if (Nodes.Count != 0) { Nodes.MoveNext(); // NOTE: Necéssaire pour se placer sur le noeud recherché /* Encodage des données dans la classe Expert */ expert.setId(Convert.ToInt32(Nodes.Current.GetAttribute("id", ""))); expert.setLogin(login); expert.setPassword(Nodes.Current.GetAttribute("password", "")); Nodes.Current.MoveToFirstChild(); /* On se déplace sur le premier noeud * enfant "Prenom" */ expert.setFirstName(Nodes.Current.Value); Nodes.Current.MoveToNext(); // On se déplace sur le noeud suivant "Nom" expert.setLastName(Nodes.Current.Value); Nodes.Current.MoveToNext(); expert.setEmail(Nodes.Current.Value); Nodes.Current.MoveToNext(); expert.setPhoneNumber(Nodes.Current.Value); Nodes.Current.MoveToNext(); expert.setAddress(Nodes.Current.Value); Nodes.Current.MoveToNext(); expert.setRole(Nodes.Current.Value); Nodes.Current.MoveToNext(); expert.setSpecialty(Nodes.Current.Value); Nodes.Current.MoveToNext(); expert.setStatus(Helper.StringToStatus(Nodes.Current.Value)); } /* Si aucun expert n'a été trouvé */ else { expert.setnoMatch(true); } } catch (Exception x) { expert.setnoMatch(true); } /* Renvoi de toutes les données dans une instance de la classe "Client" */ return expert; }