using données;
using notre_bibliotheque;
using PersDataContract;
using System;
using System.Collections.Generic;
using System.Diagnostics;
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 vues
{
///
/// Interaction logic for MainWindow.xaml
///
public partial class MainWindow : Window
{
private GestionaireDeComptes gestionaireDeComptes;
private GestionaireDeLangages gestionaireDeLangages;
public GestionaireDeLangages GestionaireLangages => gestionaireDeLangages;
public GestionaireDeComptes GestionaireCompte => gestionaireDeComptes;
private Navigateur navigateur;
private IPercistance percistance;
public MainWindow()
{
InitializeComponent();
// Si le chargement par DataContract ne fonctione pas, c'est un Stub qui est choisi à la place
percistance = new MyDataContract("Persistance.xml");
Gestionaire.Persistance = percistance;
gestionaireDeComptes = new GestionaireDeComptes();
gestionaireDeLangages = new GestionaireDeLangages();
try
{
gestionaireDeLangages.ChargerLesLangages();
gestionaireDeComptes.ChargerLesComptes();
}catch(Exception)
{
Gestionaire.Persistance = new Stub("Persistance.xml");
Debug.WriteLine("Imposible de charger le data contract");
gestionaireDeLangages.ChargerLesLangages();
gestionaireDeComptes.ChargerLesComptes();
}
gestionaireDeComptes.ItemsComptes.ItemsDeLAutreType = gestionaireDeLangages.ItemsLangages;
navigateur = new Navigateur(gestionaireDeLangages);
gestionaireDeLangages.ItemsLangages.ItemsDeLAutreType = gestionaireDeComptes.ItemsComptes;
DataContext = gestionaireDeLangages;
ModifierLangageMenu.DataContext = gestionaireDeLangages;
SupprimerLangageMenu.DataContext = gestionaireDeLangages;
}
///
/// Permet d'ouvrir une fenêtre modale qui permet de creer un langage
///
/// Objet qui appelle NouveauLangage_Click
/// Argument de l'evenement
private void NouveauLangage_Click(object sender, RoutedEventArgs e)
{
FormulaireLangage formWin = new FormulaireLangage(true);
formWin.ShowDialog();
}
///
/// Permet d'ouvrir une fenêtre modale qui permet de modifier un langage
///
/// Objet qui appelle ModifierLangage_Click
///
private void ModifierLangage_Click(object sender, RoutedEventArgs e)
{
FormulaireLangage formWin = new FormulaireLangage(false);
formWin.DataContext = gestionaireDeLangages.ItemsLangages.ItemCourant;
formWin.ShowDialog();
}
///
/// Pemrmet de Supprimer un Langage de la liste des langages disponibles
///
/// Objet qui appelle SupprimerLangage_Click
/// Arguments de l'evenement
private void SupprimerLangage_Click(object sender, RoutedEventArgs e)
{
switch (MessageBox.Show($"Etes-vous sûr de supprimer {(gestionaireDeLangages.ItemsLangages.ItemCourant as Langage).Nom} ?", "supprimer", MessageBoxButton.OKCancel, MessageBoxImage.Warning))
{
case MessageBoxResult.OK:
gestionaireDeLangages.ItemsLangages.Supprimer(gestionaireDeLangages.ItemsLangages.ItemCourant);
break;
default:
case MessageBoxResult.Cancel:
break;
}
}
///
/// Permet de changer d'UC si besion et ajoute le Langage séléctioné à l'historique de l'utilisateur si il est connécté
///
/// Objet qui appelle MasterDesLangages_SelectionChanged
///
private void MasterDesLangages_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
detail.Content = navigateur.ControlCourant;
if (gestionaireDeComptes.IsSomeoneConnected && (sender as ListBox).SelectedItem != null)
{
(gestionaireDeComptes.ItemsComptes.ItemCourant as Compte).AjouterUnLangageALHistorique((sender as ListBox).SelectedItem as Langage);
}
GestionaireLangages.OnPropertyChange("IsASelectedLanguage");
Debug.WriteLine(GestionaireLangages.ItemsLangages.ItemCourant);
}
///
/// Permet d'affichier l'UC de connexion
///
/// Objet appellant SeConnecter_Click
/// Argument de l'evenement
private void SeConnecter_Click(object sender, RoutedEventArgs e)
{
GestionaireLangages.ItemsLangages.ItemCourant = null;
detail.Content = navigateur.ControlCourant;
}
///
/// Permet de déconnecter l'utilisateur courrant
///
/// Objet qui appelle Deconnexion_Click
/// Argument de l'evenement
private void Deconnexion_Click(object sender, RoutedEventArgs e)
{
if (gestionaireDeComptes.IsSomeoneConnected)
{
gestionaireDeComptes.ItemsComptes.ItemCourant = null;
gestionaireDeLangages.ItemsLangages.ItemCourant = null;
temoinID.DataContext = "Non connecté";
detail.Content = navigateur.ControlCourant;
GestionaireCompte.onPropertyChanged("IsSomeoneConnected");
boutonLangages.IsEnabled = false;
}
else
{
MessageBox.Show("Vous n'êtes pas connecté", "déconnexion", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
///
/// Permet de sauvegarder les données de l'application
///
/// Objet qui appelle SauvegarderALaFermeture
/// Argument de l'evenement
private void SauvegarderALaFermeture(object sender, EventArgs e)
{
Gestionaire.Persistance = new MyDataContract("Persistance.xml");
List langagesÀSauvegarder = new List();
List comptesÀSauvegarder = new List();
GestionaireLangages.ItemsLangages.Filtre = ValeurTri.Nom;
foreach(Item it in GestionaireLangages.ItemsLangages.LesItems)
{
langagesÀSauvegarder.Add(it as Langage);
}
foreach(Item it in GestionaireCompte.ItemsComptes.LesItems)
{
comptesÀSauvegarder.Add(it as Compte);
}
Gestionaire.Persistance?.SauvegarderLesDonnées(langagesÀSauvegarder, comptesÀSauvegarder);
}
}
}