From c89eac52643195ef64af9564ee7d541c9e6d6824 Mon Sep 17 00:00:00 2001 From: thchazot1 Date: Sat, 11 Jun 2022 21:39:42 +0200 Subject: [PATCH] Documentation finie sauf pour la persistance --- WpfApp1/AddAShark.xaml.cs | 2 +- WpfApp1/ChangerMotDePasse.xaml.cs | 2 +- WpfApp1/CreerCompte.xaml.cs | 2 +- WpfApp1/InfoUtilisateur.xaml.cs | 2 +- WpfApp1/MainWindow.xaml.cs | 2 +- WpfApp1/SeConnecter.xaml.cs | 2 +- WpfApp1/UserControlBoite.xaml.cs | 1 + WpfApp1/UserControlEdit.xaml.cs | 66 ++++++++++++------ WpfApp1/ValiderSubmit.xaml.cs | 2 - .../{requin_Asley.mp4 => requin_Ashley.mp4} | Bin WpfApp1/WpfApp1.csproj | 4 +- WpfApp1/userControlAcceuil.xaml.cs | 2 +- WpfApp1/userControlDescription.xaml.cs | 49 ++++++++++--- 13 files changed, 96 insertions(+), 40 deletions(-) rename WpfApp1/Videos/{requin_Asley.mp4 => requin_Ashley.mp4} (100%) diff --git a/WpfApp1/AddAShark.xaml.cs b/WpfApp1/AddAShark.xaml.cs index 8dd65ca..f34148d 100644 --- a/WpfApp1/AddAShark.xaml.cs +++ b/WpfApp1/AddAShark.xaml.cs @@ -31,7 +31,7 @@ namespace WpfApp1 } 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 + public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; //ManagerUser lié à celui de l'app private List consList = new List //List contenant toutes les conservations diff --git a/WpfApp1/ChangerMotDePasse.xaml.cs b/WpfApp1/ChangerMotDePasse.xaml.cs index 654f836..78097ac 100644 --- a/WpfApp1/ChangerMotDePasse.xaml.cs +++ b/WpfApp1/ChangerMotDePasse.xaml.cs @@ -26,7 +26,7 @@ namespace WpfApp1 InitializeComponent(); } - public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; //Manager lié à celui de l'app + public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; //ManagerUser lié à celui de l'app /// diff --git a/WpfApp1/CreerCompte.xaml.cs b/WpfApp1/CreerCompte.xaml.cs index a5a7bf0..e085138 100644 --- a/WpfApp1/CreerCompte.xaml.cs +++ b/WpfApp1/CreerCompte.xaml.cs @@ -27,7 +27,7 @@ namespace WpfApp1 InitializeComponent(); } - public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; //Manager lié à celui de l'app + public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; //ManagerUser lié à celui de l'app /// diff --git a/WpfApp1/InfoUtilisateur.xaml.cs b/WpfApp1/InfoUtilisateur.xaml.cs index f264b3c..8985316 100644 --- a/WpfApp1/InfoUtilisateur.xaml.cs +++ b/WpfApp1/InfoUtilisateur.xaml.cs @@ -28,7 +28,7 @@ namespace WpfApp1 InitializeComponent(); } - public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; //Manager lié à celui de l'app + public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; //ManagerUser lié à celui de l'app private Personne _pers; public Personne pers //L'utilisateur qui permettra de mettre les informations de la page à jour diff --git a/WpfApp1/MainWindow.xaml.cs b/WpfApp1/MainWindow.xaml.cs index 2b725f9..aa2d9db 100644 --- a/WpfApp1/MainWindow.xaml.cs +++ b/WpfApp1/MainWindow.xaml.cs @@ -28,7 +28,7 @@ namespace WpfApp1 public partial class MainWindow : Window { 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 + public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; //ManagerUser lié à celui de l'app Nullable zonePage{ get; set; } //Zone qui permet de connaitre la zone de la comboBox diff --git a/WpfApp1/SeConnecter.xaml.cs b/WpfApp1/SeConnecter.xaml.cs index 4964f94..1a88732 100644 --- a/WpfApp1/SeConnecter.xaml.cs +++ b/WpfApp1/SeConnecter.xaml.cs @@ -23,7 +23,7 @@ namespace WpfApp1 public partial class SeConnecter : Window { - public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; //Manager lié à celui de l'app + public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; //ManagerUser lié à celui de l'app public SeConnecter() { InitializeComponent(); diff --git a/WpfApp1/UserControlBoite.xaml.cs b/WpfApp1/UserControlBoite.xaml.cs index 7c2f066..9b42c74 100644 --- a/WpfApp1/UserControlBoite.xaml.cs +++ b/WpfApp1/UserControlBoite.xaml.cs @@ -17,6 +17,7 @@ namespace WpfApp1 { /// /// Logique d'interaction pour UserControlBoite.xaml + /// UerControl pour toutes les fois ou nous avons besoins d'un textBlock et en dessous d'une textBox /// public partial class UserControlBoite : UserControl { diff --git a/WpfApp1/UserControlEdit.xaml.cs b/WpfApp1/UserControlEdit.xaml.cs index d5b45c1..f5e6240 100644 --- a/WpfApp1/UserControlEdit.xaml.cs +++ b/WpfApp1/UserControlEdit.xaml.cs @@ -32,11 +32,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; //ManagerUser lié à celui de l'app + public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; //ManagerUser lié à celui de l'app private Requin _requin; - public Requin requin + public Requin requin //Requin qui permet de mettre à jour l'affichage de la page { get { return _requin; } set @@ -47,7 +47,7 @@ namespace WpfApp1 } - private List consList = new List + private List consList = new List //List qui contient tous les status de conservation { Conservation.EX, Conservation.EW, @@ -61,9 +61,13 @@ namespace WpfApp1 }; - - public void UptadeUi(Requin requin) + /// + /// Méthode qui permet de mettre à jour l'affichage de la page à partir d'un requin + /// + /// + private void UptadeUi(Requin requin) { + //Met à jour les textBoxs leNom.Contenu = requin.Nom; nomSci.Contenu = requin.NomSci; desc.Contenu = requin.Description; @@ -72,24 +76,24 @@ namespace WpfApp1 LienMap.Contenu = requin.PhotoCarte; funFact.Contenu = requin.FunFact; - - foreach (Control control in this.radioButtons.Children) + //Boucles qui permettent de cocher le bon radioButton en fonction du status de conservation du requin + foreach (Control control in this.radioButtons.Children) //For each sur tout ce que possède radioButtons { - if (control is RadioButton radio) + if (control is RadioButton radio) //Regarde si le control est un RadioButton { - if (radio.Content is string radString) + if (radio.Content is string radString) //Transforme le radio.content en string { - if (radString == requin.StatutCons.ToString()) + if (radString == requin.StatutCons.ToString()) //Test si il est égal au ToString du status de conservation du requin { - radio.IsChecked = true; - goto loopEnd; + radio.IsChecked = true; //Coche le RadioButton + goto loopEnd; //Permet de sortir des boucles quand le radioButton a été coché } } } } loopEnd: - + //Coche les bonnes zones en fonction de la répartition du requin foreach (Zone z in requin.Repartition) { if (z == Zone.ATLANTIQUE) @@ -111,14 +115,27 @@ namespace WpfApp1 } } + /// + /// Evénement qui permet à l'utilisateur de retourner à la page de description du requin + /// + /// + /// private void exit_Click(object sender, RoutedEventArgs e) { + //Change le content control de la main window en UserControlDescription ((MainWindow)System.Windows.Application.Current.MainWindow).ContentControlSwapDes(requin); } + + /// + /// Evénement qui permet de valider les modifications faites à un requin + /// + /// + /// private void submit_Click(object sender, RoutedEventArgs e) { int test = 0; + //Récupère les informations qu'a rentré l'utilisateur List lesZones = new List(); Conservation cons = new Conservation(); string nom = leNom.LeContenu.Text; @@ -129,21 +146,22 @@ namespace WpfApp1 string map = LienMap.LeContenu.Text; string fun = funFact.LeContenu.Text; + //Bouclesqui récupèrent le RadioButton coché et mettent le bon status de conservation dans cons foreach (Control control in this.radioButtons.Children) { if (control is RadioButton radio) { - if (radio.IsChecked == true) + if (radio.IsChecked == true) //Test si le RadioButton est coché { - if (radio.Content is string radString) + if (radio.Content is string radString) //Transforme son content en string { - foreach (Conservation conserv in consList) + foreach (Conservation conserv in consList) //Boucles pour tester avec tous les status de conservation { if (radString == conserv.ToString()) { cons = conserv; test++; - goto loopEnd ; + goto loopEnd ; //Sort des boucles } } } @@ -152,13 +170,14 @@ namespace WpfApp1 } loopEnd: - + //Test si la vidéo vient du répertoire Vidéos if (!video.Contains("Videos/")) { MessageBox.Show("Les vidéos doivent venir obligatoirement du répertoire Videos"); return; } + //Test quels checkBox sont cochées et ajoute dans la liste de zone du requin les zones cochées if (Arct.IsChecked == true) { lesZones.Add(Zone.ARCTIQUE); @@ -175,23 +194,28 @@ namespace WpfApp1 { lesZones.Add(Zone.PACIFIQUE); } - + //Test si toutes les informations sont bien remplies if (test == 0 || lesZones.Count()==0 || Mgr.verifierRequin(nom, sciNam, descri, photo, video, map)==false) { MessageBox.Show("Veuillez remplir tout les champs obligatoires"); } - + //Test si la fun fact et vide else if (string.IsNullOrWhiteSpace(fun)) { + //Si elle est vide alors utilise le constructeur de requin avec la liste de fun facts Requin req = new Requin(nom, sciNam, descri, photo, video, map, cons, lesZones, Mgr.FunFacts); + //Test si l'utilisateur est un Expert ou un Utilisateur if (MgrUser.SelectedUser is Utilisateur user) { + //Ajoute le requin dans la liste des requins modifiés user.AjouterRequin(req, Mgr.RequinsEdit); } else { + //Ajoute le requin dans la liste de requin validés Mgr.ModifieRequin(Mgr.Requins.SingleOrDefault(r => r.Equals(req)), req); } + //Change le content control de la main window en UserControlDesscription ((MainWindow)System.Windows.Application.Current.MainWindow).ContentControlSwapDes(requin); } else diff --git a/WpfApp1/ValiderSubmit.xaml.cs b/WpfApp1/ValiderSubmit.xaml.cs index fbcf7e1..dc92027 100644 --- a/WpfApp1/ValiderSubmit.xaml.cs +++ b/WpfApp1/ValiderSubmit.xaml.cs @@ -24,8 +24,6 @@ namespace WpfApp1 public partial class ValiderSubmit : Window { - - public Manager Mgr => (Application.Current as App).LeManager; public ValiderSubmit() { diff --git a/WpfApp1/Videos/requin_Asley.mp4 b/WpfApp1/Videos/requin_Ashley.mp4 similarity index 100% rename from WpfApp1/Videos/requin_Asley.mp4 rename to WpfApp1/Videos/requin_Ashley.mp4 diff --git a/WpfApp1/WpfApp1.csproj b/WpfApp1/WpfApp1.csproj index 7831752..d8655dd 100644 --- a/WpfApp1/WpfApp1.csproj +++ b/WpfApp1/WpfApp1.csproj @@ -37,7 +37,7 @@ - + @@ -111,7 +111,7 @@ PreserveNewest - + PreserveNewest diff --git a/WpfApp1/userControlAcceuil.xaml.cs b/WpfApp1/userControlAcceuil.xaml.cs index e288a1a..05492e3 100644 --- a/WpfApp1/userControlAcceuil.xaml.cs +++ b/WpfApp1/userControlAcceuil.xaml.cs @@ -23,7 +23,7 @@ namespace WpfApp1 /// public partial class userControlAcceuil : UserControl { - public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; //Manager lié à celui de l'app + public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; //ManagerUser lié à celui de l'app public userControlAcceuil() { diff --git a/WpfApp1/userControlDescription.xaml.cs b/WpfApp1/userControlDescription.xaml.cs index a726d86..79a3b04 100644 --- a/WpfApp1/userControlDescription.xaml.cs +++ b/WpfApp1/userControlDescription.xaml.cs @@ -23,6 +23,7 @@ namespace WpfApp1 { /// /// Logique d'interaction pour userControlDescription.xaml + /// UserControl qui affiche la desription d'un requin /// public partial class userControlDescription : UserControl { @@ -30,11 +31,11 @@ namespace WpfApp1 { InitializeComponent(); } - public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; - public Manager Mgr => (Application.Current as App).LeManager; + public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; //ManagerUser lié à celui de l'app + public Manager Mgr => (Application.Current as App).LeManager; //Manager lié à celui de l'app private Requin _requin; - public Requin requin + public Requin requin //le requin qui permet de changer l'affichage de la page { get { return _requin; } set @@ -46,27 +47,47 @@ namespace WpfApp1 public int cmp = 0; + + /// + /// Evénement qui permet de changer le content control de la main window + /// + /// + /// private void exit_Click(object sender, RoutedEventArgs e) { + //Change le content control en UserControlAcceuil ((MainWindow)System.Windows.Application.Current.MainWindow).ContentControlSwapAcc(); } + + /// + /// Evénement qui soit change le content control de la main window soit ouvre la page SeConnecter + /// + /// + /// private void edit_Click(object sender, RoutedEventArgs e) { + //Test si l'utilisateur est connecté if (MgrUser.SelectedUser == null) { + //Si il ne l'est pas alors ouvrir la page SeConnecter MessageBox.Show("Vous avez besoin d'être connecté pour accéder à cette fonctionnalité"); var seConnecter = new SeConnecter(); seConnecter.ShowDialog(); } else { + //Si il l'est changer le content control en UserControlEdit ((MainWindow)System.Windows.Application.Current.MainWindow).ContentControlSwapEdit(requin); } } - + /// + /// 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; @@ -77,7 +98,12 @@ namespace WpfApp1 return bitmap; } - public void UptadeUi(Requin requin) + + /// + /// Méthode qui permet de mettre à jour l'affichage de la page en fonction du requin + /// + /// + private void UptadeUi(Requin requin) { string url = "Images/" + requin.StatutCons.ToString() + ".png"; nameReq.Text = requin.Nom; @@ -87,22 +113,24 @@ namespace WpfApp1 funFact.Text = requin.FunFact; consPic.Source = new BitmapImage(new Uri(url, UriKind.Relative)); - //La source des vidéos ne peut pas venir d'internet ou de youtube avec plus de temps nous aurions rajouté cette fonctionnalité + //La source des vidéos ne peut pas venir d'internet ou de youtube. Avec plus de temps nous aurions rajouté cette fonctionnalité vid.Source = new Uri(requin.Video, UriKind.Relative); //La source des photos peuvent venir d'internet if (requin.Photo.Contains("Images/")) //Vérifie si la photo vient d'internet ou du dossier { + //Si elle vient du dossier alors 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; } - + //Même choses que les tests du dessus if (requin.PhotoCarte.Contains("Images/")) { cartePic.Source = new BitmapImage(new Uri(requin.PhotoCarte, UriKind.RelativeOrAbsolute)); @@ -116,12 +144,17 @@ namespace WpfApp1 } + /// + /// Evénement qui est déclenché lorsque l'on clique sur la vidéo (easter egg) + /// + /// + /// private void vid_MouseDown(object sender, MouseButtonEventArgs e) { cmp = cmp+1; if (cmp == 10) { - vid.Source = new Uri("Videos/requin_Asley.mp4", UriKind.Relative); + vid.Source = new Uri("Videos/requin_Ash ley.mp4", UriKind.Relative); } } }