Example #1
0
        private void btnConnect_Click(object sender, RoutedEventArgs e)
        {
            //Si aucune session n'est sélectionné dans la dataGrid, fait jouer un petit beep d'erreur windows.
            if (dgSessions.SelectedIndex != -1)
            {
                //Non-nulleable (struct), donc forced cast. Type assumé.
                Session newSession = (Session)dgSessions.SelectedItem;
                //Si nous voulons nous connecter à la session déjà active, il n'y a rien d'autre à faire.
                if (SessionActive == newSession)
                {
                    return;
                }
                //Valide si le compte actuel existe sur la nouvelle session spécifié et s'il est admins.
                //Sinon l'utilisateur se coupe la branche sous les pieds.
                if (!IsAdminOnNewConnexion(newSession.ToConnexionString()))
                {
                    MessageBox.Show("Impossible de se connecter. Est-ce que votre compte existe sur la base de données et êtes vous administrateur?",
                                    "Erreur de connexion",
                                    MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
                //Lance la méthode pour faire le changement de session active dans l'UI (le mettre en gras).
                //Prend comme paramètre l'index dans obsSessions de l'ancienne session et la prochaine.
                SwitchActive(obsSessions.IndexOf(SessionActive), obsSessions.IndexOf(newSession));

                SessionActive = newSession;

                //Enregistre la nouvelle session active dans la configuration du logiciel.
                Properties.Settings.Default.ActiveSession = "{" + SessionActive.ToString() + "}";
                Properties.Settings.Default.Save();

                //Récupère l'instance de mainWindow et lance la méthode Configurer pour reconstruire les services MySql avec la nouvelle connexion.
                IApplicationService mainWindow = ServiceFactory.Instance.GetService <IApplicationService>();
                mainWindow.Configurer();
                //Retourne au menu principal connecté parce qu'il est déjà connecté s'il a eu accès â MenuConnexion et pour garantir un état valide si par example
                //il était dans une fenêtre qui utilisait les services MySql de l'ancienne connexion.
                mainWindow.ChangerVue(new MenuPrincipalConnecte());
            }
            else
            {
                //Beep d'erreur microsoft.
                SystemSounds.Beep.Play();
            }
        }