/// <summary> /// Méthode qui permet à l'administrateur de supprimer un jeu de la liste de jeu /// </summary> /// <param name="jeuASupprimer">Jeu qui va être supprimé</param> /// <param name="utilisateur">Utilisateur qui veut supprimer le jeu, normalement admin</param> public void SupprimerJeu(JeuVidéo jeuASupprimer, UtilisateurConnecté utilisateur) { if (utilisateur is Administrateur) { ListeJeux.Remove(jeuASupprimer); ListeJeuxAux.Remove(jeuASupprimer); } SauvegardeDonnées(); }
/// <summary> /// Méthode qui permet à l'administrateur d'ajouter un jeu de la liste de jeu /// </summary> /// <param name="jeuAAjouter">Jeu qui va être ajouté</param> /// <param name="utilisateur1">Utilisateur qui veut ajouter le jeu, normalement admin</param> public void AjouterJeu(JeuVidéo jeuAAjouter, UtilisateurConnecté utilisateur) { if (utilisateur is Administrateur) { ListeJeux.Add(jeuAAjouter); ListeJeuxAux.Add(jeuAAjouter); } SauvegardeDonnées(); }
/// <summary> /// Méthode qui va charger les données contenues dans le fichier de sauvegarde /// </summary> /// <returns>Elle renvoie la liste de jeux clonés et d'utilisateurs chargés dans la méthode </returns> public (IEnumerable <JeuVidéo> jeuVidéos, IEnumerable <UtilisateurConnecté> utilisateursConnectés) ChargeDonnées() { if (!File.Exists(DataFile)) // vérification que le fichier existe { throw new FileNotFoundException("Le fichier n'a pas été trouvé"); // lance un exception si pas trouvé } DataToPersist dataToPersist; // initialisation des collections DTO using (Stream s = File.OpenRead(DataFile)) // instanciation du flux de donnée s en lecture -> on utilise using pour pas oublier de fermer le fichier car appel implicite et automatique de dispose() pour nettoyer données non-managées { dataToPersist = Serializer.ReadObject(s) as DataToPersist; // déserialisation des données qui sont mises dans les collections DTO } ListeJeux = dataToPersist.ListeJeux.ToPOCOs().ToList(); // transformation de la ListeJeux DTO en ListeJeux POCO (objet métier) ListeUtilisateurConnecté = dataToPersist.ListeUtilisateurs.ToPOCOS(ListeJeux).ToList(); // transformation de la ListeUtilisateur DTO en ListeUtilisateur POCO (objet métier) ListeUtilisateurConnecté.AddRange(dataToPersist.ListeAdministrateurs.ToPOCOS(ListeJeux).ToList()); // transformation de la ListeAdministrateur DTO en ListeAdministrateurs POCO (objet métier) return(ListeJeux.Select(m => m.Clone()).Cast <JeuVidéo>().AsEnumerable(), ListeUtilisateurConnecté); // Renvoie des deux liste dont Listjeux a ses jeux clonés pour eviter problème référence dans le modèle }
/// <summary> /// Méthode permettant de charger les données de l'application /// </summary> public void ChargeDonnées() { var données = DataManager.ChargeDonnées(); foreach (var jeu in données.jeuVidéos) { ListeJeux.Add(jeu); //Ajoute les jeux chargés à la liste de jeux } ListeJeux.Sort(); //Trie la liste jeu par ordre alphabétique ListeJeuxArray = new JeuVidéo[ListeJeux.Count()]; //Instancie le tableau de tous les jeux vidéos(ListeJeuxArray) pour la copie for (int i = 0; i < ListeJeux.Count(); i++) { ListeJeuxArray[i] = ListeJeux[i].Clone() as JeuVidéo; // sélectionne tous les jeux de ListeJeux, les clonent et les mets dans le tableau ListeJeuxArray } ListeJeuxAux = new ObservableCollection <JeuVidéo>(ListeJeuxArray); //Instancie la ListeJeuxAux qui sert pour les tris à partir du tableau ListeJeuxArray foreach (var user in données.utilisateursConnectés) { ListeUtilisateur.Add(user); //Ajoute les utilisateurs chargés à la liste d'utilisateur } }
/// <summary> /// Méthode qui recherche un jeu grâce au nom rentré dans la barre de recherche de l'application avec le nom complet ou le début de lettre /// </summary> /// <param name="nomJeu">Nom du jeu voulu</param> /// <returns>Le jeu recherché ou null si rien n'a été trouvé</returns> public List <JeuVidéo> RechercherJeuTextBox(string nomJeu) { return(ListeJeux.Where(jeu => jeu.Nom.ToLower().StartsWith(nomJeu.ToLower())).ToList()); }
/// <summary> /// Méthode qui recherche un jeu et le renvoie seulement si le nom complet est le même /// </summary> /// <param name="nomJeu">Nom du jeu voulu</param> /// <returns>Le jeu recherché ou null si rien n'a été trouvé</returns> public JeuVidéo RechercherJeu(string nomJeu) { return(ListeJeux.SingleOrDefault(jeu => jeu.Nom.ToLower().Equals(nomJeu.ToLower()))); }