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
///
public partial class AddAShark : Window
{
///
/// Page qui permet à un utilisateur d'ajouter un requin
///
public AddAShark()
{
InitializeComponent();
DataContext = Mgr;
}
///
/// Manager lié à celui de l'app
///
public Manager Mgr => (Application.Current as App).LeManager;
///
/// ManagerUser lié à celui de l'app
///
public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers;
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();
}
}
}
}