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; using VideoLibrary; namespace WpfApp1 { public class EditWeGoEventArgs : EventArgs { public Requin Requin { get; private set; } public EditWeGoEventArgs(Requin requin) => Requin = requin; } public class AccueilWeGoEventArgs : EventArgs { public Nullable Zone { get; private set; } public AccueilWeGoEventArgs(Zone? zone) => Zone = zone; } /// /// Logique d'interaction pour userControlDescription.xaml /// UserControl qui affiche la desription d'un requin /// public partial class userControlDescription : UserControl { public userControlDescription() { InitializeComponent(); } 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 //le requin qui permet de changer l'affichage de la page { get { return _requin; } set { _requin = value; UptadeUi(_requin); } } public Zone? zone { get; set; } public event EventHandler EditWeGo; protected virtual void OnEditWeGo(EditWeGoEventArgs args) => EditWeGo?.Invoke(this, args); public event EventHandler AccueilWeGo; protected virtual void OnAccueilWeGo(AccueilWeGoEventArgs args) => AccueilWeGo?.Invoke(this, args); 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_Ash ley.mp4", UriKind.Relative); } } } }