using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using Business; using Modèle; namespace WpfApp1 { /// /// Logique d'interaction pour AddAShark.xaml /// Page qui permet à un utilisateur d'ajouter un requin /// public partial class AddAShark : Window { public AddAShark() { InitializeComponent(); DataContext = Mgr; } 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 //List contenant toutes les conservations { Conservation.EX, Conservation.EW, Conservation.CR, Conservation.EN, Conservation.VU, Conservation.NT, Conservation.LC, Conservation.DD, 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; string sciNam = sciName.LeContenu.Text; string descri = desc.LeContenu.Text; string photo = lienPhoto.LeContenu.Text; 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) //Obligation de regardé si c'est ==true car IsChecked return un Nullable { if (radio.Content is string radString) { foreach (Conservation conserv in consList) { if (radString == conserv.ToString()) { cons = conserv; 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 } } } } } } loopEnd: 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); } if (Atla.IsChecked == true) { lesZones.Add(Zone.ATLANTIQUE); } if (Indi.IsChecked == true) { lesZones.Add(Zone.INDIEN); } if (Paci.IsChecked == true) { lesZones.Add(Zone.PACIFIQUE); } //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 { // Test pour voir si la fun fact est vide if (string.IsNullOrWhiteSpace(fun)) { //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 { 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(); } } } }