using Business; using Modèle; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net.Http; 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 { /// /// Classe EditWeGoEventArgs qui implémente EventArgs /// Elle permet de créer un argument qui permet de transformer le content control de la main window en UserControlEdit après avoir cliquer sur le bouton Edit /// public class EditWeGoEventArgs : EventArgs { /// /// Le requin que l'on veut passer lors de l'événement /// public Requin Requin { get; private set; } /// /// L'Evénement pour changer le content control /// /// public EditWeGoEventArgs(Requin requin) => Requin = requin; } /// /// Classe AccueilWeGo qui implémente EventArgs /// Elle permet de créer un argument qui permet de transformer le content control de la main window en UserControlAccueil après avoir cliquer sur le bouton Exit /// public class AccueilWeGoEventArgs : EventArgs { /// /// La Zone que l'on veut passer lors de l'événement /// public Nullable Zone { get; private set; } /// /// L'Evénement pour crevenir à la page d'accueil /// /// public AccueilWeGoEventArgs(Zone? zone) => Zone = zone; } /// /// Logique d'interaction pour userControlDescription.xaml /// public partial class userControlDescription : UserControl { /// /// UserControl qui affiche la desription d'un requin /// public userControlDescription() { InitializeComponent(); } /// /// ManagerUser lié à celui de l'app /// public ManagerUsers MgrUser => (Application.Current as App).LeManagerUsers; /// /// Manager lié à celui de l'app /// public Manager Mgr => (Application.Current as App).LeManager; private Requin _requin; /// /// le requin qui permet de changer l'affichage de la page /// public Requin requin { get { return _requin; } set { _requin = value; UptadeUi(_requin); } } /// /// La zone de la page principale /// public Zone? zone { get; set; } /// /// L'Event handler EditWeGo /// public event EventHandler EditWeGo; /// /// L'événement appelé lors du clique /// /// protected virtual void OnEditWeGo(EditWeGoEventArgs args) => EditWeGo?.Invoke(this, args); /// /// L'eventhandler AccueilWeGo /// public event EventHandler AccueilWeGo; /// /// L'événement appelé lors du clique /// /// protected virtual void OnAccueilWeGo(AccueilWeGoEventArgs args) => AccueilWeGo?.Invoke(this, args); /// /// Un compteur /// 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 OnAccueilWeGo(new AccueilWeGoEventArgs(zone)); } /// /// 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 OnEditWeGo(new EditWeGoEventArgs(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; BitmapImage bitmap = new BitmapImage(); bitmap.BeginInit(); bitmap.UriSource = new Uri(path, UriKind.Absolute); bitmap.EndInit(); return bitmap; } /// /// 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; sciName.Text = requin.NomSci; desc.Text = requin.Description; 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é 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)); } else { BitmapImage bitmap = new BitmapImage(); bitmap = urlEnBitmap(requin.PhotoCarte); cartePic.Source = bitmap; } } /// /// 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_Ashley.mp4", UriKind.Relative); } } } }