diff --git a/Business/Manager.cs b/Business/Manager.cs index e1717bb..3b22c5c 100644 --- a/Business/Manager.cs +++ b/Business/Manager.cs @@ -9,22 +9,26 @@ using System.Threading.Tasks; namespace Business { + + /// + /// Class Manager qui gère les requins, les requins ajoutés, les requins modifiés et les fun facts + /// public class Manager { - public ObservableCollection Requins { get; private set; } - public ObservableCollection RequinsEdit { get; private set; } - public ObservableCollection RequinsAdd { get; private set; } - public Requin SelectedRequin { get; set; } + public ObservableCollection Requins { get; private set; } //ObservableCollection les requins qui ont déjà été validés + public ObservableCollection RequinsEdit { get; private set; } //ObservableCollection les requins qui ont été modifiés par des utilisateurs et qui n'ont pas encore été validés + public ObservableCollection RequinsAdd { get; private set; } //ObservableCollection les requins qui ont été ajoutés par des utilisateurs et qui n'ont pas encore été validés + public Requin SelectedRequin { get; set; } //Requin actuellement utilisé dans l'application - public List FunFacts { get; private set; } = new List(); + public List FunFacts { get; private set; } = new List(); //List la liste des fun facts /// /// DéPENDANCE /// - public IPersistanceManager Pers { get; set; } + public IPersistanceManager Pers { get; set; } //IPersistanceManager ce qui permet de gérer la persistance de l'applcation /// /// constructeur avec INJECTION DE LA DéPENDANCE @@ -37,6 +41,10 @@ namespace Business RequinsAdd = new ObservableCollection(); Pers = pers; } + + /// + /// Méthode LoadRequins de la classe Manager qui permet de remplir les listes de requins grâce à l'IPersistanceManager + /// public void LoadRequins() { @@ -59,6 +67,10 @@ namespace Business } } + + /// + /// Méthode SaveRequins de la classe Manager qui permet de sauvegarder les listes de requins grâce à l'IPersistanceManager + /// public void SaveRequins() { List req = new List(); @@ -71,6 +83,12 @@ namespace Business Pers.SaveRequins(req, add, edit); } + + /// + /// Méthode AjouterRequin de la classe Manager qui permet d'ajouter un requin dans la liste des requins + /// + /// Requin qui va être ajouté dans la liste + /// Booléen : true si il a été ajouté, false sinon public bool AjouterRequin(Requin req) { Requin test = Requins.SingleOrDefault(r => r.Equals(req)); @@ -82,6 +100,11 @@ namespace Business return true; } + /// + /// Méthode SupprimerRequin de la classe Manager qui permet de supprimer un requin de la liste des requins + /// + /// Requin qui va être supprimé dans la liste + /// Booléen : true si il a été supprimé, false sinon public bool SupprimerRequin(Requin req) { Requin test = Requins.SingleOrDefault(r => r.Equals(req)); @@ -93,11 +116,24 @@ namespace Business return true; } + + /// + /// Méthode GetRequin de la classe Manager qui permet de récupérer un requin de la liste des requins + /// + /// Requin que l'on cherche dans dans la liste + /// Requin trouvé public Requin GetRequin(Requin req) { return Requins.SingleOrDefault(r => r.Equals(req)); } + + /// + /// Méthode ModifieRequin de la classe Manager qui permet de modifier un ancien requin de la liste des requins à partir d'un nouveau + /// + /// Requin l'ancien requin dans la liste des requins + /// Requin le nouveau requin + /// Booléen : true si il a été modifié, false sinon public bool ModifieRequin(Requin oldR, Requin newR) { if (!oldR.Equals(newR)) @@ -109,6 +145,12 @@ namespace Business return true; } + + /// + /// Méthode AjouterRequinEdit de la classe Manager qui permet d'ajouter un requin dans la liste des requins modifiés + /// + /// Requin qui va être ajouté dans la liste + /// Booléen : true si il a été ajouté, false sinon public bool AjouterRequinEdit(Requin req) { Requin test = RequinsEdit.SingleOrDefault(r => r.Equals(req)); @@ -121,6 +163,11 @@ namespace Business return true; } + /// + /// Méthode SupprimerRequinEdit de la classe Manager qui permet de supprimer un requin de la liste des requins modifiés + /// + /// Requin qui va être supprimé dans la liste + /// Booléen : true si il a été supprimé, false sinon public bool SupprimerRequinEdit(Requin req) { Requin test = RequinsEdit.SingleOrDefault(r => r.Equals(req)); @@ -133,6 +180,11 @@ namespace Business } + /// + /// Méthode AjouterRequinAdd de la classe Manager qui permet d'ajouter un requin dans la liste des requins ajoutés + /// + /// Requin qui va être ajouté dans la liste + /// Booléen : true si il a été ajouté, false sinon public bool AjouterRequinAdd(Requin req) { Requin test = RequinsAdd.SingleOrDefault(r => r.Equals(req)); @@ -145,6 +197,12 @@ namespace Business return true; } + + /// + /// Méthode SupprimerRequinAdd de la classe Manager qui permet de supprimer un requin de la liste des requins ajoutés + /// + /// Requin qui va être supprimé dans la liste + /// Booléen : true si il a été supprimé, false sinon public bool SupprimerRequinAdd(Requin req) { Requin test = RequinsAdd.SingleOrDefault(r => r.Equals(req)); @@ -156,21 +214,41 @@ namespace Business return true; } + + /// + /// Méthode GetRequinEdit de la classe Manager qui permet de récupérer un requin de la liste des requins modifiés + /// + /// Requin que l'on cherche dans dans la liste + /// Requin trouvé public Requin GetRequinEdit(Requin req) { return RequinsEdit.SingleOrDefault(r => r.Equals(req)); } + + /// + /// Méthode GetRequinAdd de la classe Manager qui permet de récupérer un requin de la liste des requins ajoutés + /// + /// Requin que l'on cherche dans dans la liste + /// Requin trouvé public Requin GetRequinAdd(Requin req) { return RequinsAdd.SingleOrDefault(r => r.Equals(req)); } - public List rechercherRequins(ObservableCollection lRech, Nullable zone, String motif) + + /// + /// Méthode RechercherRequins qui permet de rechercher des requins dans une ObservableCollection en fonction de leurs zones et d'un motif + /// + /// ObservableCollection dans laquelle on fait la recherche + /// string sur lequel on fait la recherche + /// Zone? sur laquelle on fait la recherche + /// List contenant tous les requins trouvés en fonction du motif et de la zone + public List RechercherRequins(ObservableCollection lRech, Nullable zone, string motif) { List nvReq = new List(); int test = 0; - if (!String.IsNullOrWhiteSpace(motif)) + if (!string.IsNullOrWhiteSpace(motif)) { foreach (Requin req in lRech) { @@ -201,6 +279,10 @@ namespace Business return nvReq; } + /// + /// Méthode vérifierRequin qui permet de vérifiersi les strings que l'on donnerait au constructeur de requin son vides + /// + /// Booléen : true si il n'y en a pas de vide, false sinon public bool verifierRequin(String nom, String nomSci, String description, String photo, String video, String photoCarte) { if (String.IsNullOrWhiteSpace(nom) || String.IsNullOrWhiteSpace(nomSci) || String.IsNullOrWhiteSpace(description) || String.IsNullOrWhiteSpace(photo) @@ -212,6 +294,9 @@ namespace Business } + /// + /// Méthode LoadFunFacts de la classe Manager qui permet de charger la liste de fun facts grâce à l'IPersistanceManager + /// public void LoadFunFacts() { FunFacts.Clear(); @@ -222,7 +307,9 @@ namespace Business } } - + /// + /// Méthode LoadFunFacts de la classe Manager qui permet de sauvegarder la liste de fun facts grâce à l'IPersistanceManager + /// public void SaveFunFacts() { Pers.SaveFunFacts(FunFacts); diff --git a/Business/ManagerUsers.cs b/Business/ManagerUsers.cs index cca518a..9caaf9f 100644 --- a/Business/ManagerUsers.cs +++ b/Business/ManagerUsers.cs @@ -32,6 +32,10 @@ namespace Business Pers = pers; } + + /// + /// Méthode LoadUsers de la classe ManagerUser qui permet de charger les liste d'Utilisateurs et d'Experts grâce à l'IPersistanceManager + /// public void LoadUsers() { @@ -50,13 +54,20 @@ namespace Business } - + /// + /// Méthode SaveUsers de la classe ManagerUser qui permet de sauvegarder les listes d'Utilisateurs et d'Experts grâce à l'IPersistanceManager + /// public void SaveUsers() { Pers.SaveUsers(Utilisateurs, Experts); } + /// + /// Méthode AjouterUtilisateur de la classe ManagerUser qui permet d'ajouter un Utilisateur dans la liste d'Utilisateurs + /// + /// Utilisateur qui va être ajouté dans la liste + /// Booléen : true si il a été ajouté, false sinon public bool AjouterUtilisateur(Utilisateur user) { if (Utilisateurs.Contains(user)) @@ -68,6 +79,11 @@ namespace Business return true; } + /// + /// Méthode SupprmierUtilisateur de la classe ManagerUser qui permet de supprimer un Utilisateur de la liste des Utilisateurs + /// + /// Utilisateur qui va être supprimé dans la liste + /// Booléen : true si il a été supprimé, false sinon public bool SupprimerUtilisateur(Utilisateur user) { if (!Utilisateurs.Contains(user)) @@ -79,6 +95,11 @@ namespace Business } + /// + /// Méthode AjouterExpert de la classe ManagerUser qui permet d'ajouter un Expert dans la liste d'Experts + /// + /// Expert qui va être ajouté dans la liste + /// Booléen : true si il a été ajouté, false sinon public bool AjouterExpert(Expert expert) { if (Experts.Contains(expert)) @@ -90,6 +111,11 @@ namespace Business return true; } + /// + /// Méthode SupprmierExpertr de la classe ManagerUser qui permet de supprimer un Expert de la liste des Experts + /// + /// Expert qui va être supprimé dans la liste + /// Booléen : true si il a été supprimé, false sinon public bool SupprimerExpert(Expert expert) { if (!Experts.Contains(expert)) @@ -100,11 +126,24 @@ namespace Business return true; } - public Personne GetUtilisateur(Personne user) + + /// + /// Méthode GetPersonne de la classe ManagerUser qui permet de récupérer une personne dans la liste de personne (Expert et Utilisateur) + /// + /// Personne que l'on cherche dans dans la liste + /// Personne trouvée + public Personne GetPersonne(Personne pers) { - return Utilisateurs.SingleOrDefault(r => r.Equals(user)); + return Utilisateurs.SingleOrDefault(r => r.Equals(pers)); } + + /// + /// Méthode ModifieUtilisateur de la classe ManagerUser qui permet de modifier un ancien Utilisateur de la liste des Utilisateurs à partir d'un nouveau + /// + /// Utilisateur l'ancien Utilisateur dans la liste des utilisateurs + /// Utilisateur le nouvel requin + /// Booléen : true si il a été modifié, false sinon public bool ModifieUtilisateur(Utilisateur oldU, Utilisateur newU) { if (!oldU.Equals(newU)) @@ -117,6 +156,12 @@ namespace Business } + /// + /// Méthode ModifieExpert de la classe ManagerUser qui permet de modifier un ancien Expert de la liste des Experts à partir d'un nouveau + /// + /// Expert l'ancien Expert dans la liste des experts + /// Expert le nouveau Expert + /// Booléen : true si il a été modifié, false sinon public bool ModifieExpert(Expert oldE, Expert newE) { if (!oldE.Equals(newE)) diff --git a/Modèle/Carte.cs b/Modèle/Carte.cs deleted file mode 100644 index 5ad4959..0000000 --- a/Modèle/Carte.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Modèle -{ - public class Carte - { - public string Nom { get; private set; } - public string Url { get; private set; } - public List LaZone { get; private set; } - - } - -} diff --git a/Modèle/Conservation.cs b/Modèle/Conservation.cs index 2abd3bf..15fe8d7 100644 --- a/Modèle/Conservation.cs +++ b/Modèle/Conservation.cs @@ -7,6 +7,10 @@ using System.Threading.Tasks; namespace Modèle { + /// + /// Type énuméré qui contient tous les status de conservation des espèces animales. + /// + [DataContract] public enum Conservation { diff --git a/Modèle/Expert.cs b/Modèle/Expert.cs index 79a950d..d2334e3 100644 --- a/Modèle/Expert.cs +++ b/Modèle/Expert.cs @@ -8,31 +8,64 @@ using System.Threading.Tasks; namespace Modèle { + + /// + /// Class Expert qui implémente l'interface Personne + /// Un expert peut ajouter et modifier des requins mais il peut aussi valider ou refuser les ajouts ou les modifications des utilisateurs + /// + + [DataContract] public class Expert : Personne { [DataMember] - public DateTime DateD { get; private set; } + public DateTime DateD { get; private set; } //DateTime qui permet de connaitre la date de création x'un compte expert [DataMember] - public string Surnom { get; private set; } + public string Surnom { get; private set; } //String le surnom d'un expert + + /// + /// Constructeur sans DateTime + /// + /// String email de l'Expert (son identifiant pour se connecter + /// String le mot de passe de l'Expert + /// String surnom de l'Expert public Expert(string email, string mdp, string surnom) : base(email, mdp) { Surnom = surnom; DateD = DateTime.Now; } + /// + /// Constructeur avec DateTime + /// + /// String email de l'Expert (son identifiant pour se connecter + /// String le mot de passe de l'Expert + /// String surnom de l'Expert + /// Date de création du compte Expert public Expert(string email, string mdp, string surnom, DateTime date) : base(email, mdp) { Surnom = surnom; DateD = date; } + + + /// + /// Méthode ToString de la classe Expert + /// public override string ToString() { - return Email + " " + MotDePasse + " " + Surnom + " " + DateD; + return Email + " " + " " + Surnom + " " + DateD; } + /// + /// Méthode de test lors de la création de la class Expert qui permettait de valider ou de refuser des requins ajoutés par les utilisateurs + /// + /// List qui est la list contenant tout les requins ajoutés par des Utilisateurs + /// List qui est la list contenant tout les requins validés par les experts + /// Int : Le nombre changement validé + public int ValiderSubmit(List lBdFinie, List lBdPasFinie) { int i=0; @@ -64,6 +97,12 @@ namespace Modèle } + /// + /// Méthode de test lors de la création de la class Expert qui permettait de valider ou de refuser des requins édités par les utilisateurs + /// + /// List qui est la list contenant tout les requins ajoutés par des Utilisateurs + /// List qui est la list contenant tout les requins validés par les experts + /// Int : Le nombre changement validé public int ValiderUnChangement(List lBdFinie, List lBdPasfinie) { int i = 0; @@ -95,17 +134,32 @@ namespace Modèle return i; } - + /// + /// Méthode Equals de la Class Expert qui permet de savoir si deux experts sont égaux, regarde en fonction des emails + /// + /// Expert + /// Booléen : true si elles sont égales, false si elles sont différentes public bool Equals(Expert e) { return Email == e.Email; } + + /// + /// Méthode qui permet d'ajouter un Requin dans une ObservableCollection de Requin + /// + /// Requin qui va être ajouté dans l'observable collection + /// ObservableCollection l'ObservableCollection dans laquelle on ajoute le Requin public override void AjouterRequin(Requin req, ObservableCollection requins) { requins.Add(req); } + + /// + /// Méthode qui permet de changer le mot de passe de l'Expert + /// + /// String nouveau mot de passe de l'Expert public override void ChangerMotDePasse(string nvMdp) { MotDePasse = nvMdp; diff --git a/Modèle/Personne.cs b/Modèle/Personne.cs index 4dff978..1cb690e 100644 --- a/Modèle/Personne.cs +++ b/Modèle/Personne.cs @@ -8,24 +8,48 @@ using System.Threading.Tasks; namespace Modèle { + + /// + /// Interface Personne qui est la base des utilisateurs de l'application + /// + [DataContract] public abstract class Personne { [DataMember] - public string Email { get; protected set; } + public string Email { get; protected set; } //String email d'une Personne [DataMember] - public string MotDePasse { get; protected set; } + public string MotDePasse { get; protected set; } //String mot de passe d'une Personne + + /// + /// Constructeur d'une personne + /// + /// String l'email de la personne qui va être créée + /// String le mot de passe de la personne public Personne(string email, string mdp) { Email = email; MotDePasse = mdp; } + /// + /// Création de la méthode abstraite ToString + /// public abstract override string ToString(); + /// + /// Création de la méthode abstraite AjouterRequin qui permet d'ajouter un Requin dans une ObservableCollection de Requin + /// + /// Requin le requin a ajouter + /// ObservableCollection la où on ajoute le requin public abstract void AjouterRequin(Requin req, ObservableCollection requins); + + /// + /// Création de la méthode abstraite ChangerMotDePasse qui permet de changer le mot de passe d'un personne + /// + /// String le nouveau mot de passe d'un Personne public abstract void ChangerMotDePasse(string nvMdp); } } diff --git a/Modèle/Position.cs b/Modèle/Position.cs index 9f3bc03..3d1bbf6 100644 --- a/Modèle/Position.cs +++ b/Modèle/Position.cs @@ -6,19 +6,32 @@ using System.Threading.Tasks; namespace Modèle { + + /// + /// Classe Position qui permet de connaitre la surface de répartition d'un requin + /// Cependant nous n'avons pas eu le temps d'implémenter cette classe dans les requins + /// public class Position { - public float LattitudeDeb { get; set; } - public float LattitudeFin { get; set; } - public float LongitudeDeb { get; set; } - public float LongitudeFin { get; set; } + public float LattitudeDeb { get; set; } //Int lattitude la plus faible + public float LattitudeFin { get; set; } //Int lattitude la plus haute + public float LongitudeDeb { get; set; } //Int longitude la plus faible + public float LongitudeFin { get; set; } //Int longitude la plus haute + /// + /// Méthode Equals qui permet de savoir si une position est égale à une autre + /// + /// Position + /// Booléen : true si elles sont égales, false si elles sont différentes public bool Equals(Position p) { return p.LattitudeDeb == LattitudeDeb && p.LattitudeFin == LattitudeFin && p.LongitudeDeb == LongitudeDeb && p.LongitudeFin == LongitudeFin; } + /// + /// Constructeur d'une Position + /// public Position(int lDeb, int lFin, int longDeb, int longFin) { diff --git a/Modèle/Requin.cs b/Modèle/Requin.cs index 2ad495e..f7fefba 100644 --- a/Modèle/Requin.cs +++ b/Modèle/Requin.cs @@ -7,29 +7,45 @@ using System.Threading.Tasks; namespace Modèle { + + /// + /// Classe Requin qui impléemente la méthode IEquatable + /// [DataContract] public class Requin : IEquatable { [DataMember] - public string Nom { get; private set; } + public string Nom { get; private set; } //string le nom du requin [DataMember] - public string NomSci { get; private set; } + public string NomSci { get; private set; } //string le nom scientifique du requin [DataMember] - public string Description { get; private set; } + public string Description { get; private set; } //string la description du requin [DataMember] - public string Photo { get; private set; } + public string Photo { get; private set; } //string l'URL de la photo du requin [DataMember] - public string Video { get; private set; } + public string Video { get; private set; } //string le chemin de la vidéo du requin [DataMember] - public string PhotoCarte { get; private set; } + public string PhotoCarte { get; private set; } //string l'URL de la photo de la carte de répartition du requin [DataMember] - public Conservation StatutCons { get; private set; } + public Conservation StatutCons { get; private set; } //Conservation le statut de conservation du requin [DataMember] - public string FunFact { get; private set; } + public string FunFact { get; private set; } //string fun fact sur les requins [DataMember] - public List Repartition { get; private set; } + public List Repartition { get; private set; } //List la répartition du requin sur la planète + /// + /// Constructeur du requin avec fun fact + /// + /// string le nom du requin + /// string le nom scientifique du requin + /// string la description du requin + /// string l'URL de la photo du requin + /// string le chemin de la vidéo du requin + /// string l'URL de la photo de la carte de répartition du requin + /// Conservation le statut de conservation du requin + /// List la répartition du requin sur la planète + /// string fun fact sur les requins public Requin(string nom, string nomSci, string description, string photo, string video, string photoCarte, Conservation statutCons, List repartition, string funFact) { Nom = nom; NomSci = nomSci; @@ -42,6 +58,18 @@ namespace Modèle FunFact = funFact; } + /// + /// Constructeur du requin sans fun fact qui génère donc une fun fact aléatoire depuis une liste de fun fact + /// + /// string le nom du requin + /// string le nom scientifique du requin + /// string la description du requin + /// string l'URL de la photo du requin + /// string le chemin de la vidéo du requin + /// string l'URL de la photo de la carte de répartition du requin + /// Conservation le statut de conservation du requin + /// List la répartition du requin sur la planète + /// List list de fun facts public Requin(string nom, string nomSci, string description, string photo, string video, string photoCarte, Conservation statutCons, List repartition, List funFacts) { Random rnd = new Random(); @@ -57,18 +85,28 @@ namespace Modèle FunFact = funFacts[num]; } + + /// + /// Méthode ToString de la classe Requin + /// public override string ToString() { return Nom + " " + NomSci + " " + Description + " " + StatutCons + " " + FunFact + " " + Photo; } - + /// + /// Méthode Equals de la classe Requin qui permet de savoir si deux requins sont égaux, regarde l'égalité en fonction des noms et des nom scientifiques + /// public bool Equals(Requin r) { return r.Nom == Nom && r.NomSci == NomSci; } + + /// + /// Méthode ToString de la classe Requin qui permet l'implémentation de la méthode IEquatable + /// public override bool Equals(object obj) { if (ReferenceEquals(obj, null)) return false; @@ -77,6 +115,10 @@ namespace Modèle return Equals(obj as Requin); } + + /// + /// Méthode GetHashCode de la classe Requin qui permet de récupérer le hash code d'un requin avec son nom et son nom scientifique + /// public override int GetHashCode() { return Nom.GetHashCode() ^ NomSci.GetHashCode(); diff --git a/Modèle/UCrequinType.cs b/Modèle/UCrequinType.cs index 83d43fc..0de654a 100644 --- a/Modèle/UCrequinType.cs +++ b/Modèle/UCrequinType.cs @@ -6,6 +6,9 @@ using System.Threading.Tasks; namespace Modèle { + /// + /// Type énuméré qui permet de savoir si un UserControlRequin et de type normal, édité ou ajouté + /// public enum UCrequinType { normal, diff --git a/Modèle/Utilisateur.cs b/Modèle/Utilisateur.cs index 3b58107..72bbdba 100644 --- a/Modèle/Utilisateur.cs +++ b/Modèle/Utilisateur.cs @@ -8,38 +8,69 @@ using System.Threading.Tasks; namespace Modèle { + + /// + /// Classe Utilisateur qui implémente l'interface Personne + /// [DataContract] public class Utilisateur : Personne { [DataMember] - public int NbSubmit { get; private set; } + public int NbSubmit { get; private set; } //int qui permet de savoir le nombre d'ajouts et de modifications qu'à fait un utilisateur + + /// + /// Constructeur d'utilisateur sans nombre de submits + /// + /// string l'email de l'utilisateur + /// string mot de passe de l'utilisateur public Utilisateur(string mail, string mdp): base(mail, mdp) { NbSubmit = 0; } + /// + /// Constructeur d'utilisateur avec nombre de submits + /// + /// string l'email de l'utilisateur + /// string mot de passe de l'utilisateur + /// int le nombre de submits de l'utilisateur public Utilisateur(string mail, string mdp, int nbSubmit): base(mail, mdp) { NbSubmit = nbSubmit; } + /// + /// Méthode ToString de la classe Utilisateur + /// public override string ToString() { - return Email + " " + MotDePasse + " " + NbSubmit; + return Email + " " + NbSubmit; } - + /// + /// Méthode Equals de la classe Utilisateur qui regarde en fonction des emails + /// + /// Utilisateur + /// Booléen : true si ils sont égaux, false si ils sont différents public bool Equals(Utilisateur u) { return Email == u.Email; } - + /// + /// Méthode qui permet d'ajouter un Requin dans une ObservableCollection de Requin et d'augmenter le nombre de submits de 1 + /// + /// Requin qui va être ajouté dans l'observable collection + /// ObservableCollection l'ObservableCollection dans laquelle on ajoute le Requin public override void AjouterRequin(Requin req, ObservableCollection requins) { requins.Add(req); NbSubmit++; } + /// + /// Méthode qui permet de changer le mot de passe de l'Utilisateur + /// + /// String nouveau mot de passe de l'Utilisateur public override void ChangerMotDePasse(string nvMdp) { MotDePasse = nvMdp; diff --git a/Modèle/Zone.cs b/Modèle/Zone.cs index 16c2f09..2345124 100644 --- a/Modèle/Zone.cs +++ b/Modèle/Zone.cs @@ -7,6 +7,9 @@ using System.Threading.Tasks; namespace Modèle { + /// + /// Type énuméré qui contient les océans où il y a des requins + /// [DataContract] public enum Zone { diff --git a/WpfApp1/AddAShark.xaml.cs b/WpfApp1/AddAShark.xaml.cs index d44bdab..8dd65ca 100644 --- a/WpfApp1/AddAShark.xaml.cs +++ b/WpfApp1/AddAShark.xaml.cs @@ -18,6 +18,7 @@ namespace WpfApp1 { /// /// Logique d'interaction pour AddAShark.xaml + /// Page qui permet à un utilisateur d'ajouter un requin /// public partial class AddAShark : Window { @@ -29,11 +30,11 @@ namespace WpfApp1 } - public Manager Mgr => (Application.Current as App).LeManager; - public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; + public Manager Mgr => (Application.Current as App).LeManager; //Manager lié à celui de l'app + public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; //Manager lié à celui de l'app - private List consList = new List + private List consList = new List //List contenant toutes les conservations { Conservation.EX, Conservation.EW, @@ -46,14 +47,24 @@ namespace WpfApp1 Conservation.NE }; - + /// + /// Evénement ExitClick qui permet de quitter la page + /// + /// + /// private void exit_Click(object sender, RoutedEventArgs e) { Close(); } + /// + /// Evénement SubmitClick qui permet d'ajouter un requin depuis la page + /// + /// + /// private void submit_Click(object sender, RoutedEventArgs e) { + //Récupération de toutes les valeurs rentrées par l'utilisateur Conservation cons = new Conservation(); List lesZones = new List(); string nom = name.LeContenu.Text; @@ -63,14 +74,15 @@ namespace WpfApp1 string video = lienVid.LeContenu.Text; string map = lienMap.LeContenu.Text; string fun = funny.LeContenu.Text; + int testCons = 0; - + //Récupération du statut de conservation rentré par l'utilisateur foreach (Control control in this.radioButtons.Children) { if (control is RadioButton) { RadioButton radio = control as RadioButton; - if (radio.IsChecked == true) + if (radio.IsChecked == true) //Obligation de regardé si c'est ==true car IsChecked return un Nullable { if (radio.Content is string radString) { @@ -79,7 +91,8 @@ namespace WpfApp1 if (radString == conserv.ToString()) { cons = conserv; - goto loopEnd; + testCons = 1; //Permet de savoir que la conservation a bien été rentrée + goto loopEnd; //Permet de sortir de toutes les boucles quand on a trouvé la conservation } } } @@ -89,13 +102,13 @@ namespace WpfApp1 loopEnd: - if (!video.Contains("Videos/")) + if (!video.Contains("Videos/")) //test si la vidéo vient bien du répetoire Vidéos (Nous n'avons pas eu le temps d'ajouter la fonctionalités pour les vidéos depuis internet) { MessageBox.Show("Les vidéos doivent venir obligatoirement du répertoire Videos"); return; } - + //Test pour voir quels zones sont cochées if (Arct.IsChecked == true) { lesZones.Add(Zone.ARCTIQUE); @@ -113,23 +126,43 @@ namespace WpfApp1 lesZones.Add(Zone.PACIFIQUE); } - if (lesZones.Count() == 0 || string.IsNullOrWhiteSpace(nom) || string.IsNullOrWhiteSpace(sciNam) || string.IsNullOrWhiteSpace(descri) - || string.IsNullOrWhiteSpace(photo) || string.IsNullOrWhiteSpace(video) || string.IsNullOrWhiteSpace(map) || string.IsNullOrWhiteSpace(fun)) + //Test pour voir si toutes les informations ont été rentrées + if (lesZones.Count() == 0 || Mgr.verifierRequin(nom, sciNam, descri, photo, video, map) == false || testCons==0) { MessageBox.Show("Veuillez remplir toutes les informations"); return; } else { - Requin requin = new Requin(nom, sciNam, descri, photo, video, map, cons, lesZones, fun); - if (MgrUser.SelectedUser is Utilisateur user) + // Test pour voir si la fun fact est vide + if (string.IsNullOrWhiteSpace(fun)) { - user.AjouterRequin(requin, Mgr.RequinsAdd); + //Si elle est vide alors on crée le requin avec la liste de fun facts + Requin requin = new Requin(nom, sciNam, descri, photo, video, map, cons, lesZones, Mgr.FunFacts); + //Test pour savoir si l'utilisateur est un Expert ou un Utilisateur + if (MgrUser.SelectedUser is Utilisateur user) + { + user.AjouterRequin(requin, Mgr.RequinsAdd); //Ajout dans la liste d'ajout + } + else if (MgrUser.SelectedUser is Expert exp) + { + exp.AjouterRequin(requin, Mgr.Requins); //Ajout directement dans la liste de requin validé + } } - else if (MgrUser.SelectedUser is Expert exp) + else { - exp.AjouterRequin(requin, Mgr.Requins); + Requin requin = new Requin(nom, sciNam, descri, photo, video, map, cons, lesZones, fun); + //Pareil que la boucle du dessus + if (MgrUser.SelectedUser is Utilisateur user) + { + user.AjouterRequin(requin, Mgr.RequinsAdd); + } + else if (MgrUser.SelectedUser is Expert exp) + { + exp.AjouterRequin(requin, Mgr.Requins); + } } + Close(); } diff --git a/WpfApp1/ChangerMotDePasse.xaml.cs b/WpfApp1/ChangerMotDePasse.xaml.cs index 6a07db2..654f836 100644 --- a/WpfApp1/ChangerMotDePasse.xaml.cs +++ b/WpfApp1/ChangerMotDePasse.xaml.cs @@ -17,6 +17,7 @@ namespace WpfApp1 { /// /// Logique d'interaction pour ChangerMotDePasse.xaml + /// Page qui permet à un utilisateur de changer son mot de passe /// public partial class ChangerMotDePasse : Window { @@ -25,14 +26,21 @@ namespace WpfApp1 InitializeComponent(); } - public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; + public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; //Manager lié à celui de l'app + + /// + /// Evénement qui permet de valider le changement du mot de passe + /// + /// + /// private void valider_Click(object sender, RoutedEventArgs e) { if (verifierConf()) { if (verifierAncienMdp()) { + //Change le mot de passe de l'utilisateur MgrUser.SelectedUser.ChangerMotDePasse(nvMdp.Password); Close(); } @@ -47,16 +55,30 @@ namespace WpfApp1 } } + /// + /// Méthode qui vérifie que le mot de passe et le même que celui de la confirmation + /// + /// Booléen : true si ils sont égaux, false sinon private bool verifierConf() { return nvMdp.Password == confMdp.Password; } + /// + /// Méthode qui vérifie que l'ancien mot de passe et bien le mot de passe actuel de l'utilisateur + /// + /// Booléen : true si ils sont égaux, false sinon private bool verifierAncienMdp() { return ancienMdp.Password == MgrUser.SelectedUser.MotDePasse; } + + /// + /// Evénement qui permet de quitter la page + /// + /// + /// private void exit_Click(object sender, RoutedEventArgs e) { Close(); diff --git a/WpfApp1/CreerCompte.xaml.cs b/WpfApp1/CreerCompte.xaml.cs index 6d6ac05..a5a7bf0 100644 --- a/WpfApp1/CreerCompte.xaml.cs +++ b/WpfApp1/CreerCompte.xaml.cs @@ -18,6 +18,7 @@ namespace WpfApp1 { /// /// Logique d'interaction pour CreerCompte.xaml + /// Page qui permet à un utilisateur de créer un compte /// public partial class CreerCompte : Window { @@ -26,13 +27,24 @@ namespace WpfApp1 InitializeComponent(); } - public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; + public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; //Manager lié à celui de l'app + + /// + /// Evénement qui permet de quitter la page + /// + /// + /// private void exit_Click(object sender, RoutedEventArgs e) { Close(); } + /// + /// Evénement qui permet d'ouvrir la page de connection + /// + /// + /// private void Connection_Click(object sender, RoutedEventArgs e) { var connectWindow = new SeConnecter(); @@ -40,22 +52,32 @@ namespace WpfApp1 connectWindow.ShowDialog(); } + + /// + /// Evénement qui permet de créer un compte utilisateur + /// + /// + /// private void inscription_Click(object sender, RoutedEventArgs e) { + //Récupère les informations rentrées par l'utilisateur string mail = email.LeContenu.Text; string password = mdp.Password; string conf = reMdp.Password; + //TEst si les mots de passe sont identiques if (password != conf) { MessageBox.Show("Les mots de passe doivent être identiques"); } - if (string.IsNullOrWhiteSpace(mail) && string.IsNullOrWhiteSpace(password)) + //Test si toutes les informations ont été rentrées + else if (string.IsNullOrWhiteSpace(mail) && string.IsNullOrWhiteSpace(password)) { MessageBox.Show("Veuillez remplir toutes les cases"); } else { Utilisateur user = new Utilisateur(mail, password); + //Test si l'utilisateur a bien été créé et ajout" if (MgrUser.AjouterUtilisateur(user)) { MgrUser.SelectedUser = user; diff --git a/WpfApp1/DescriptionAdd.xaml b/WpfApp1/DescriptionAdd.xaml index 9157ca1..c492577 100644 --- a/WpfApp1/DescriptionAdd.xaml +++ b/WpfApp1/DescriptionAdd.xaml @@ -5,7 +5,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfApp1" mc:Ignorable="d" - Title="Description" Height="450" Width="800"> + Title="Description" Height="550" Width="800"> diff --git a/WpfApp1/DescriptionAdd.xaml.cs b/WpfApp1/DescriptionAdd.xaml.cs index d3340cd..e4f0c44 100644 --- a/WpfApp1/DescriptionAdd.xaml.cs +++ b/WpfApp1/DescriptionAdd.xaml.cs @@ -19,6 +19,7 @@ namespace WpfApp1 { /// /// Logique d'interaction pour Description.xaml + /// Page qui affiche la description d'un requin de la liste des requins ajoutéss /// public partial class DescriptionAdd : Window { @@ -28,13 +29,13 @@ namespace WpfApp1 } - public Manager Mgr => (Application.Current as App).LeManager; + public Manager Mgr => (Application.Current as App).LeManager; //Manager lié à celui de l'app private Requin _requin; - public Requin requin + public Requin requin //requin sur lequel se base l'affichage de la page { get { return _requin; } set @@ -44,6 +45,11 @@ namespace WpfApp1 } } + /// + /// Méthode qui permet de transformer un url venant d'internet en BitmapImage + /// + /// + /// BitmapImage la nouvel BitmapImage créée à partir de du string private BitmapImage urlEnBitmap(string url) { var path = @url; @@ -54,9 +60,15 @@ namespace WpfApp1 return bitmap; } + + /// + /// Méthode qui met à jour toutes les informations sur la page grace au requin + /// + /// public void uptadeUi(Requin requin) { - string url = "Images/" + requin.StatutCons.ToString() + ".png"; + string url = "Images/" + requin.StatutCons.ToString() + ".png"; //Transforme la conservation en chemin pour l'image liée à cette conservation + //Met à jour tous texteBlocks nameReq.Text = requin.Nom; sciName.Text = requin.NomSci; desc.Text = requin.Description; @@ -64,19 +76,21 @@ namespace WpfApp1 funFact.Text = requin.FunFact; consPic.Source = new BitmapImage(new Uri(url, UriKind.RelativeOrAbsolute)); - - if (requin.Photo.Contains("Images/")) //Vérifie si la photo vient d'internet ou du dossier + //Vérifie si la photo vient d'internet ou du dossier + if (requin.Photo.Contains("Images/")) { + //Si elle vient d'internet alors on la transforme directement en BitmapImage photo.Source = new BitmapImage(new Uri(requin.Photo, UriKind.RelativeOrAbsolute)); } else { + //Sinon appelle la fonction urlEnBitmap BitmapImage bitmap = new BitmapImage(); bitmap = urlEnBitmap(requin.Photo); photo.Source = bitmap; } - + //Pareil que les tests du dessus if (requin.PhotoCarte.Contains("Images/")) { cartePic.Source = new BitmapImage(new Uri(requin.PhotoCarte, UriKind.RelativeOrAbsolute)); @@ -89,11 +103,21 @@ namespace WpfApp1 } } + /// + /// Evénement qui permet de quitter la page + /// + /// + /// private void exit_Click(object sender, RoutedEventArgs e) { Close(); } + /// + /// Evénement qui permet d'ajouter le requin dans la Liste des requins validé + /// + /// + /// private void valider_Click(object sender, RoutedEventArgs e) { Mgr.AjouterRequin(requin); @@ -101,6 +125,12 @@ namespace WpfApp1 Close(); } + + /// + /// Evénement qui permet de refuser le requin et donc de le supprimer de la liste des requins ajoutés + /// + /// + /// private void refuser_Click(object sender, RoutedEventArgs e) { Mgr.SupprimerRequinAdd(requin); diff --git a/WpfApp1/DescriptionEdit.xaml.cs b/WpfApp1/DescriptionEdit.xaml.cs index 0592827..7fbcd62 100644 --- a/WpfApp1/DescriptionEdit.xaml.cs +++ b/WpfApp1/DescriptionEdit.xaml.cs @@ -18,6 +18,7 @@ namespace WpfApp1 { /// /// Logique d'interaction pour DescriptionEdit.xaml + /// Page qui affiche la description d'un requins de la liste des requins modifiés avec la description du requin de base /// public partial class DescriptionEdit : Window { @@ -26,9 +27,9 @@ namespace WpfApp1 InitializeComponent(); } - public Manager Mgr => (Application.Current as App).LeManager; + public Manager Mgr => (Application.Current as App).LeManager; //Manager lié à celui de l'app - private Requin _requin; + private Requin _requin; //requin sur lequel se base l'affichage de la partie droite de la page public Requin requin { get { return _requin; } @@ -40,7 +41,7 @@ namespace WpfApp1 } - private Requin _requinOld; + private Requin _requinOld; //requin sur lequel se base l'affichage de la partie gauche de la page public Requin requinOld { @@ -51,7 +52,11 @@ namespace WpfApp1 uptadeUiOld(_requinOld); } } - + /// + /// Méthode qui permet de transformer un url venant d'internet en BitmapImage + /// + /// + /// BitmapImage la nouvel BitmapImage créée à partir de du string private BitmapImage urlEnBitmap(string url) { var path = @url; @@ -62,28 +67,35 @@ namespace WpfApp1 return bitmap; } - - public void uptadeUi(Requin requin) + /// + /// Méthode qui met à jour toutes les informations de la partie droite grace au requin + /// + /// + private void uptadeUi(Requin requin) { - string url = "Images/" + requin.StatutCons.ToString() + ".png"; + string url = "Images/" + requin.StatutCons.ToString() + ".png"; //Transforme la conservation en chemin pour l'image liée à cette conservation + //Met à jour tous texteBlocks nameReq.Text = requin.Nom; sciName.Text = requin.NomSci; desc.Text = requin.Description; vid.Source = new Uri(requin.Video, UriKind.RelativeOrAbsolute); funFact.Text = requin.FunFact; consPic.Source = new BitmapImage(new Uri(url, UriKind.RelativeOrAbsolute)); + if (requin.Photo.Contains("Images/")) //Vérifie si la photo vient d'internet ou du dossier { + //Si elle vient d'internet alors on la transforme directement en BitmapImage photo.Source = new BitmapImage(new Uri(requin.Photo, UriKind.RelativeOrAbsolute)); } else { + //Sinon appelle la fonction urlEnBitmap BitmapImage bitmap = new BitmapImage(); bitmap = urlEnBitmap(requin.Photo); photo.Source = bitmap; } - + //Pareil que les tests du dessus if (requin.PhotoCarte.Contains("Images/")) { cartePic.Source = new BitmapImage(new Uri(requin.PhotoCarte, UriKind.RelativeOrAbsolute)); @@ -97,7 +109,11 @@ namespace WpfApp1 } - public void uptadeUiOld(Requin oldRequin) + /// + /// Fait la même chose que updateUi mais pour l'ancien requin donc la partie gauche + /// + /// + private void uptadeUiOld(Requin oldRequin) { string url = "Images/" + oldRequin.StatutCons.ToString() + ".png"; nameReqOld.Text = oldRequin.Nom; @@ -130,19 +146,37 @@ namespace WpfApp1 } } - private void remplacer_Click(object sender, RoutedEventArgs e) + + /// + /// Evénement qui permet de modifier l'ancien requin en le remplaçant par le nouveau et donc l'enlève de la liste des requins modifiés et le rajoute dans la lsite des requins validés + /// + /// + /// + private void remplacer_Click(object sender, RoutedEventArgs e) { Mgr.ModifieRequin(requinOld, requin); Mgr.SupprimerRequinEdit(requin); Close(); } + + /// + /// Evénement qui permet de refuser la modification et donc supprime le requin de la liste des requins modifiés + /// + /// + /// private void garder_Click(object sender, RoutedEventArgs e) { Mgr.SupprimerRequinEdit(requin); Close(); } + + /// + /// Evénement qui permet de quitter la page + /// + /// + /// private void exit_Click(object sender, RoutedEventArgs e) { Close(); diff --git a/WpfApp1/Images/carteAtlantique.png b/WpfApp1/Images/carteAtlantique.png index 916f671..14c4c3c 100644 Binary files a/WpfApp1/Images/carteAtlantique.png and b/WpfApp1/Images/carteAtlantique.png differ diff --git a/WpfApp1/Images/carteIndien.png b/WpfApp1/Images/carteIndien.png index 65a5904..7814f7a 100644 Binary files a/WpfApp1/Images/carteIndien.png and b/WpfApp1/Images/carteIndien.png differ diff --git a/WpfApp1/Images/cartePacifique.png b/WpfApp1/Images/cartePacifique.png index e2ac639..887778c 100644 Binary files a/WpfApp1/Images/cartePacifique.png and b/WpfApp1/Images/cartePacifique.png differ diff --git a/WpfApp1/InfoUtilisateur.xaml.cs b/WpfApp1/InfoUtilisateur.xaml.cs index 78a30fd..f264b3c 100644 --- a/WpfApp1/InfoUtilisateur.xaml.cs +++ b/WpfApp1/InfoUtilisateur.xaml.cs @@ -18,6 +18,7 @@ namespace WpfApp1 { /// /// Logique d'interaction pour InfoUtilisateur.xaml + /// Page qui permet à un utilisateur de voir ses informations /// public partial class InfoUtilisateur : Window { @@ -27,10 +28,10 @@ namespace WpfApp1 InitializeComponent(); } - public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; + public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; //Manager lié à celui de l'app private Personne _pers; - public Personne pers + public Personne pers //L'utilisateur qui permettra de mettre les informations de la page à jour { get { return _pers; } set @@ -40,7 +41,10 @@ namespace WpfApp1 } } - + /// + /// Méthode qui permet de mettre à jour les informations de la page + /// + /// private void UpdateUi(Personne pers) { mdp.Text = ""; @@ -60,17 +64,35 @@ namespace WpfApp1 } } + + /// + /// Evénement qui permet de quitter la page + /// + /// + /// private void exit_Click(object sender, RoutedEventArgs e) { Close(); } + + /// + /// Evénement qui permet à l'utilisateur de se déconnecter + /// + /// + /// private void deco_Click(object sender, RoutedEventArgs e) { Close(); MgrUser.SelectedUser = null; } + + /// + /// Evénement qui permet d'ouvrir la page ChangerMotDePasse + /// + /// + /// private void changer_Click(object sender, RoutedEventArgs e) { var changerWindow = new ChangerMotDePasse(); diff --git a/WpfApp1/MainWindow.xaml.cs b/WpfApp1/MainWindow.xaml.cs index 58c7ecc..2b725f9 100644 --- a/WpfApp1/MainWindow.xaml.cs +++ b/WpfApp1/MainWindow.xaml.cs @@ -20,19 +20,19 @@ namespace WpfApp1 { /// /// Interaction logic for MainWindow.xaml + /// Page principal de CShark /// - /// public partial class MainWindow : Window { - public Manager Mgr => (Application.Current as App).LeManager; - public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; + public Manager Mgr => (Application.Current as App).LeManager; //Manager lié à celui de l'app + public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; //Manager lié à celui de l'app - Nullable zonePage{ get; set; } + Nullable zonePage{ get; set; } //Zone qui permet de connaitre la zone de la comboBox - public bool aChanger = false; + public bool aChanger = false; //Booléen qui permet de savoir si l'utilisateur a déjà changer la zone de la listBox public MainWindow() { @@ -47,17 +47,30 @@ namespace WpfApp1 } + /// + /// Evénement qui est déclenché lorsque l'ObservableCollection change pour mettre à jour l'affichage + /// + /// + /// private void Requins_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { chargerUC(); } + + /// + /// Evénement qui est déclenché lorsque la sélection de la comboBox a été changée pour mettre à jour l'affichage + /// + /// + /// private void Region_SelectionChanged(object sender, SelectionChangedEventArgs e) { ChangeRegion(); } - + /// + /// Méthode qui permet de changer zonePage et l'affichage de la page + /// private void ChangeRegion() { if (Region.SelectedIndex == 0) @@ -91,7 +104,10 @@ namespace WpfApp1 } } - + /// + /// Méthode qui permet de changer la sélection de la comboBox, zonePage et l'affichage de la page + /// + /// public void ChangeRegionAvecMap(Nullable z) { if (z == null) @@ -118,26 +134,41 @@ namespace WpfApp1 ChangerAffichage(z); } - + /// + /// Méthode qui permet de changer le content control en userControlDescription + /// + /// public void ContentControlSwapDes(Requin req) { contentControl.Content = new userControlDescription { requin = req }; } - + /// + /// Méthode qui permet de changer le content control en userControlAcceuil + /// public void ContentControlSwapAcc() { - contentControl.Content = new userControlAcceuil(); + contentControl.Content = new userControlAcceuil { zone = zonePage }; } + /// + /// Méthode qui permet de changer le content control en userControlEdit + /// + /// public void ContentControlSwapEdit(Requin req) { contentControl.Content = new UserControlEdit { requin = req }; } + + /// + /// Evénement qui est déclenché lorsque l'utilisateur qui sur la barre de Recherche et permet d'effacer le text "Rechercher" lorsque l'utilisateur qui sur la barre de Recherche + /// + /// + /// private void TextBox_IsKeyboardFocusedChanged(object sender, DependencyPropertyChangedEventArgs e) { if (Rechercher.Text == "Rechercher") @@ -146,7 +177,11 @@ namespace WpfApp1 } } - public void chargerUC() + + /// + /// Méthode qui permet de charger les userControlRequin dans la listBox + /// + private void chargerUC() { viderListBox(); foreach (Requin req in Mgr.Requins) @@ -155,6 +190,11 @@ namespace WpfApp1 } } + + /// + /// Méthode qui permet de changer l'affichage de la page en fonction d'une zone donnée + /// + /// private void ChangerAffichage(Nullable zone) { int test = 0; @@ -174,27 +214,31 @@ namespace WpfApp1 } if (test > 0) { + //Ajoute un userControlRequin si le requin a bien une zone en commun avec la zone donnée en paramètre laListe.Items.Add(new UserControlRequin { requin = req }); } test = 0; } + //Change le content control en userControlAcceuil contentControl.Content = new userControlAcceuil { zone = zone }; } - public void viderListBox() + /// + /// Méthode qui permet de vider la listBox + /// + private void viderListBox() { - if (laListe != null) - { - while (laListe.Items.Count > 0) - { - laListe.Items.RemoveAt(0); - } - } + laListe.Items.Clear(); } - + /// + /// Evénement qui est déclenché quand l'utilisateur écrit une lettre dans la barre de rechercher + /// Permet de d'ajouter des userControlRequin dans la listBox en fonction du motif rentré par l'utilisateur + /// + /// + /// private void Rechercher_KeyUp(object sender, KeyEventArgs e) { viderListBox(); @@ -202,7 +246,7 @@ namespace WpfApp1 string rech = Rechercher.Text; if (!string.IsNullOrWhiteSpace(rech)) { - nvReq = Mgr.rechercherRequins(Mgr.Requins, zonePage, rech); + nvReq = Mgr.RechercherRequins(Mgr.Requins, zonePage, rech); foreach(Requin req in nvReq) { laListe.Items.Add(new UserControlRequin { requin = req }); diff --git a/WpfApp1/SeConnecter.xaml.cs b/WpfApp1/SeConnecter.xaml.cs index 8a90c73..4964f94 100644 --- a/WpfApp1/SeConnecter.xaml.cs +++ b/WpfApp1/SeConnecter.xaml.cs @@ -18,11 +18,12 @@ namespace WpfApp1 { /// /// Logique d'interaction pour SeConnecter.xaml + /// Page qui permet à l'utilisateur de se connecter /// public partial class SeConnecter : Window { - public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; + public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; //Manager lié à celui de l'app public SeConnecter() { InitializeComponent(); @@ -30,11 +31,21 @@ namespace WpfApp1 DataContext = MgrUser; } + /// + /// Evénement qui permet de quitter la page + /// + /// + /// private void exit_Click(object sender, RoutedEventArgs e) { Close(); } + /// + /// Evénement qui permet d'ouvrir la page CreerCompte et de fermer celle la + /// + /// + /// private void Inscription_Click(object sender, RoutedEventArgs e) { var inscrireWindow = new CreerCompte(); @@ -42,29 +53,40 @@ namespace WpfApp1 inscrireWindow.ShowDialog(); } + + + /// + /// Evénement qui permet à l'utilisateur de ce connecter quand il a rentré son email et son mot de passe + /// + /// + /// private void connect_Click(object sender, RoutedEventArgs e) { + //Récupère les informations rentrées par l'utilisateur string email = mail.LeContenu.Text; string password = mdp.Password; + //Regarde si elles ne sont pas vides if (string.IsNullOrWhiteSpace(email) || string.IsNullOrWhiteSpace(password)) { MessageBox.Show("Veuillez remplir toutes les cases"); return; } + //Cherche dans la liste d'Utilisateur si un Utilisateur à cette email et ce mot de passe foreach(Personne p in MgrUser.Utilisateurs) { if (p.Email==email && password == p.MotDePasse) { - MgrUser.SelectedUser = p; + MgrUser.SelectedUser = p; //Le selectedUser de ManagerUser devient maintenant l'Utilisateur connecté Close(); return; } } + //Fais de même pour la liste d'Expert foreach(Personne p in MgrUser.Experts) { if (p.Email==email && p.MotDePasse == password) { - MgrUser.SelectedUser = p; + MgrUser.SelectedUser = p; //Le selectedUser de ManagerUser devient maintenant l'Expert connecté Close(); return; } diff --git a/WpfApp1/UserControlEdit.xaml.cs b/WpfApp1/UserControlEdit.xaml.cs index 7593bc3..d5b45c1 100644 --- a/WpfApp1/UserControlEdit.xaml.cs +++ b/WpfApp1/UserControlEdit.xaml.cs @@ -142,6 +142,7 @@ namespace WpfApp1 if (radString == conserv.ToString()) { cons = conserv; + test++; goto loopEnd ; } } @@ -160,33 +161,29 @@ namespace WpfApp1 if (Arct.IsChecked == true) { - test++; lesZones.Add(Zone.ARCTIQUE); } if (Atla.IsChecked == true) { - test++; lesZones.Add(Zone.ATLANTIQUE); } if (Indi.IsChecked == true) { - test++; lesZones.Add(Zone.INDIEN); } if (Paci.IsChecked == true) { - test++; lesZones.Add(Zone.PACIFIQUE); } - if (test == 0 || lesZones==null || Mgr.verifierRequin(nom, sciNam, descri, photo, video, map)==false) + if (test == 0 || lesZones.Count()==0 || Mgr.verifierRequin(nom, sciNam, descri, photo, video, map)==false) { MessageBox.Show("Veuillez remplir tout les champs obligatoires"); } else if (string.IsNullOrWhiteSpace(fun)) { - Requin req = new Requin(nom, sciNam, descri, photo, video, map, cons, lesZones, fun); + Requin req = new Requin(nom, sciNam, descri, photo, video, map, cons, lesZones, Mgr.FunFacts); if (MgrUser.SelectedUser is Utilisateur user) { user.AjouterRequin(req, Mgr.RequinsEdit); @@ -195,6 +192,7 @@ namespace WpfApp1 { Mgr.ModifieRequin(Mgr.Requins.SingleOrDefault(r => r.Equals(req)), req); } + ((MainWindow)System.Windows.Application.Current.MainWindow).ContentControlSwapDes(requin); } else { @@ -207,8 +205,9 @@ namespace WpfApp1 { Mgr.ModifieRequin(Mgr.Requins.SingleOrDefault(r => r.Equals(req)), req); } + ((MainWindow)System.Windows.Application.Current.MainWindow).ContentControlSwapDes(requin); } - ((MainWindow)System.Windows.Application.Current.MainWindow).ContentControlSwapDes(requin); + } } } diff --git a/WpfApp1/WpfApp1.csproj b/WpfApp1/WpfApp1.csproj index ada4f23..7831752 100644 --- a/WpfApp1/WpfApp1.csproj +++ b/WpfApp1/WpfApp1.csproj @@ -34,6 +34,9 @@ + + + @@ -99,6 +102,15 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + PreserveNewest diff --git a/WpfApp1/userControlAcceuil.xaml b/WpfApp1/userControlAcceuil.xaml index b9e8a56..04afe22 100644 --- a/WpfApp1/userControlAcceuil.xaml +++ b/WpfApp1/userControlAcceuil.xaml @@ -35,7 +35,24 @@ - + + + + + + + + + + + + + + + + + + diff --git a/WpfApp1/userControlAcceuil.xaml.cs b/WpfApp1/userControlAcceuil.xaml.cs index f6f1951..e288a1a 100644 --- a/WpfApp1/userControlAcceuil.xaml.cs +++ b/WpfApp1/userControlAcceuil.xaml.cs @@ -19,19 +19,21 @@ namespace WpfApp1 { /// /// Logique d'interaction pour userControlAcceuil.xaml + /// UserControl qui permet d'afficher la carte du monde et le bandeau de l'application /// public partial class userControlAcceuil : UserControl { - public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; - + public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; //Manager lié à celui de l'app + public userControlAcceuil() { InitializeComponent(); } + public string Carte { - set + set //set qui permet de modifier directement la source de l'image { laCarte.Source = new BitmapImage(new Uri(value, UriKind.Relative)); } @@ -39,7 +41,7 @@ namespace WpfApp1 private Nullable _zone; - public Nullable zone + public Nullable zone //Zone qui permet d'appeler la méthode choixCarte quand elle est modifiée { get { return _zone; } set @@ -53,20 +55,27 @@ namespace WpfApp1 - + /// + /// Evénement qui permet d'ouvrir la page AddAShark + /// + /// + /// private void add_Click(object sender, RoutedEventArgs e) { + //Test pour voir si l'utilisateur est connecté if (MgrUser.SelectedUser == null) { MessageBox.Show("Vous avez besoin d'être connecté pour accéder à cette fonctionnalité"); var seConnecter = new SeConnecter(); seConnecter.ShowDialog(); } + //Test pour voir si c'est un Utilisateur else if (MgrUser.SelectedUser is Utilisateur) { var addSharkWindow = new AddAShark(); addSharkWindow.ShowDialog(); } + //Test pour voir si c'est un Expert pour ouvrir la page ValiderSubmit au lieu de AddAShark else if (MgrUser.SelectedUser is Expert) { var validerSumbit = new ValiderSubmit(); @@ -76,15 +85,23 @@ namespace WpfApp1 } + /// + /// Evénement qui permet d'ouvrir soit la page CreerCompte soit InfoUtilisateur + /// + /// + /// private void Inscription_Click(object sender, RoutedEventArgs e) { + //Test pour voir si l'utilisateur est connecté if (MgrUser.SelectedUser == null) { + //Si il ne l'est pas ouvre la page CreerCompte var inscrireWindow = new CreerCompte(); inscrireWindow.ShowDialog(); } else { + //Si il l'est ouvre la page InfoUtilisateur var infoUser = new InfoUtilisateur{ pers = MgrUser.SelectedUser }; infoUser.ShowDialog(); } @@ -92,24 +109,52 @@ namespace WpfApp1 - + /// + /// Evénement qui est déclenché lorsque l'utilisateur appouye sur une partie de la carte correspondant à l'océan Arctique + /// + /// + /// private void Arctique_MouseDown(object sender, MouseButtonEventArgs e) { + //Appelle la fonction ChangeRegionAvecMap de la main window ((MainWindow)System.Windows.Application.Current.MainWindow).ChangeRegionAvecMap(Zone.ARCTIQUE); } + /// + /// Evénement qui est déclenché lorsque l'utilisateur appouye sur une partie de la carte correspondant à l'océan Atlantique + /// + /// + /// private void Atlantique_MouseDown(object sender, MouseButtonEventArgs e) { + //Appelle la fonction ChangeRegionAvecMap de la main window ((MainWindow)System.Windows.Application.Current.MainWindow).ChangeRegionAvecMap(Zone.ATLANTIQUE); } + /// + /// Evénement qui est déclenché lorsque l'utilisateur appouye sur une partie de la carte correspondant à l'océan Indien + /// + /// + /// private void Indien_MouseDown(object sender, MouseButtonEventArgs e) { + //Appelle la fonction ChangeRegionAvecMap de la main window ((MainWindow)System.Windows.Application.Current.MainWindow).ChangeRegionAvecMap(Zone.INDIEN); } + /// + /// Evénement qui est déclenché lorsque l'utilisateur appouye sur une partie de la carte correspondant à l'océan Pacifique + /// + /// + /// private void Pacifique_MouseDown(object sender, MouseButtonEventArgs e) { + //Appelle la fonction ChangeRegionAvecMap de la main window ((MainWindow)System.Windows.Application.Current.MainWindow).ChangeRegionAvecMap(Zone.PACIFIQUE); } + + /// + /// Méthode qui permet de changer la source de la carte en fonction de la zone donnée en paramètre + /// + /// private void choixCarte(Nullable zone) { if (zone == null)