You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
284 lines
10 KiB
284 lines
10 KiB
using Business;
|
|
using Modèle;
|
|
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.Navigation;
|
|
using System.Windows.Shapes;
|
|
|
|
namespace WpfApp1
|
|
{
|
|
|
|
/// <summary>
|
|
/// Classe DescWeGoEventArgs qui implémente EventArgs
|
|
/// Elle permet de créer un argument qui permet de transformer le content control de la main window en UserControlDescription après avoir cliquer sur un UserControlRequin
|
|
/// </summary>
|
|
public class DescWeGoEventArgs : EventArgs
|
|
{
|
|
/// <summary>
|
|
/// Le requin que l'on veut passer lors de l'événement
|
|
/// </summary>
|
|
public Requin Requin { get; private set; }
|
|
|
|
/// <summary>
|
|
/// L'Evénement pour changer le content control
|
|
/// </summary>
|
|
/// <param name="requin"></param>
|
|
public DescWeGoEventArgs(Requin requin) => Requin = requin;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Logique d'interaction pour UserControlEdit.xaml
|
|
/// </summary>
|
|
public partial class UserControlEdit : UserControl
|
|
{
|
|
/// <summary>
|
|
/// UserControl qui permet de modifier un requin
|
|
/// </summary>
|
|
public UserControlEdit()
|
|
{
|
|
InitializeComponent();
|
|
|
|
DataContext = Mgr;
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// ManagerUser lié à celui de l'app
|
|
/// </summary>
|
|
public Manager Mgr => (Application.Current as App).LeManager;
|
|
|
|
/// <summary>
|
|
/// ManagerUser lié à celui de l'app
|
|
/// </summary>
|
|
public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers;
|
|
|
|
private Requin _requin;
|
|
|
|
/// <summary>
|
|
/// Requin qui permet de mettre à jour l'affichage de la page
|
|
/// </summary>
|
|
public Requin requin
|
|
{
|
|
get { return _requin; }
|
|
set
|
|
{
|
|
_requin = value;
|
|
UptadeUi(_requin);
|
|
}
|
|
}
|
|
|
|
|
|
private List<Conservation> consList = new List<Conservation> //List<Conservatio> qui contient tous les status de conservation
|
|
{
|
|
Conservation.EX,
|
|
Conservation.EW,
|
|
Conservation.CR,
|
|
Conservation.EN,
|
|
Conservation.VU,
|
|
Conservation.NT,
|
|
Conservation.LC,
|
|
Conservation.DD,
|
|
Conservation.NE
|
|
};
|
|
|
|
/// <summary>
|
|
/// L'Event handler DescWeGo
|
|
/// </summary>
|
|
public event EventHandler<DescWeGoEventArgs> DescWeGo;
|
|
|
|
/// <summary>
|
|
/// L'Evénement appelé lors du clique
|
|
/// </summary>
|
|
/// <param name="args"></param>
|
|
protected virtual void OnDescWeGo(DescWeGoEventArgs args)
|
|
=> DescWeGo?.Invoke(this, args);
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// Méthode qui permet de mettre à jour l'affichage de la page à partir d'un requin
|
|
/// </summary>
|
|
/// <param name="requin"></param>
|
|
private void UptadeUi(Requin requin)
|
|
{
|
|
//Met à jour les textBoxs
|
|
leNom.Contenu = requin.Nom;
|
|
nomSci.Contenu = requin.NomSci;
|
|
desc.Contenu = requin.Description;
|
|
LienPhoto.Contenu = requin.Photo;
|
|
LienVid.Contenu = requin.Video;
|
|
LienMap.Contenu = requin.PhotoCarte;
|
|
funFact.Contenu = requin.FunFact;
|
|
|
|
//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) //Regarde si le control est un RadioButton
|
|
{
|
|
if (radio.Content is string radString) //Transforme le radio.content en string
|
|
{
|
|
if (radString == requin.StatutCons.ToString()) //Test si il est égal au ToString du status de conservation du requin
|
|
{
|
|
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)
|
|
{
|
|
Atla.IsChecked = true;
|
|
}
|
|
if (z == Zone.ARCTIQUE)
|
|
{
|
|
Arct.IsChecked = true;
|
|
}
|
|
if (z == Zone.INDIEN)
|
|
{
|
|
Indi.IsChecked = true;
|
|
}
|
|
if (z == Zone.PACIFIQUE)
|
|
{
|
|
Paci.IsChecked = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Evénement qui permet à l'utilisateur de retourner à la page de description du requin
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void exit_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
//Change le content control de la main window en UserControlDescription
|
|
OnDescWeGo(new DescWeGoEventArgs(requin));
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Evénement qui permet de valider les modifications faites à un requin
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void submit_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
int test = 0;
|
|
//Récupère les informations qu'a rentré l'utilisateur
|
|
List<Zone> lesZones = new List<Zone>();
|
|
Conservation cons = new Conservation();
|
|
string nom = leNom.LeContenu.Text;
|
|
string sciNam = nomSci.LeContenu.Text;
|
|
string descri = desc.LeContenu.Text;
|
|
string photo = LienPhoto.LeContenu.Text;
|
|
string video = LienVid.LeContenu.Text;
|
|
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) //Test si le RadioButton est coché
|
|
{
|
|
if (radio.Content is string radString) //Transforme son content en string
|
|
{
|
|
foreach (Conservation conserv in consList) //Boucles pour tester avec tous les status de conservation
|
|
{
|
|
if (radString == conserv.ToString())
|
|
{
|
|
cons = conserv;
|
|
test++;
|
|
goto loopEnd ; //Sort des boucles
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
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);
|
|
}
|
|
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 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
|
|
OnDescWeGo(new DescWeGoEventArgs(requin));
|
|
}
|
|
else
|
|
{
|
|
Requin req = new Requin(nom, sciNam, descri, photo, video, map, cons, lesZones, fun);
|
|
if (MgrUser.SelectedUser is Utilisateur user)
|
|
{
|
|
user.AjouterRequin(req, Mgr.RequinsEdit);
|
|
}
|
|
else
|
|
{
|
|
Mgr.ModifieRequin(Mgr.Requins.SingleOrDefault(r => r.Equals(req)), req);
|
|
}
|
|
OnDescWeGo(new DescWeGoEventArgs(requin));
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|