using Models;
using System.Diagnostics;

namespace LOLAPP.View
{
    public partial class Login : ContentPage
    {
        /// <summary>
        /// Gestionnaire de champion.
        /// </summary>
        public Manager Mgr => (App.Current as App).MyManager;

        /// <summary>
        /// Constructeur de la classe Login.
        /// </summary>
        public Login()
        {
            InitializeComponent();
            BindingContext = Mgr;
        }

        /// <summary>
        /// Gestionnaire de l'événement lorsqu'on clique sur le bouton LoginUtilisateur.
        /// </summary>
        /// <param name="sender">L'objet déclencheur de l'événement.</param>
        /// <param name="e">Les arguments de l'événement.</param>
        private void LoginUtilisateur_Clicked(object sender, EventArgs e)
        {
            string username = usernameEntry.Text;
            string password = passwordEntry.Text;

            // Vérifier si l'utilisateur existe et les informations de connexion sont valides
            Utilisateur utilisateur = Mgr._utilisateur.FirstOrDefault(u => u.Username == username && u.Password == password);
            if (utilisateur != null && Mgr.UtilisateurConnecte == null)
            {
                // Connexion réussie
                Mgr.UtilisateurConnecte = utilisateur;
                Logout.IsVisible = true;
                Suprim.IsVisible = true;
                DisplayAlert("Succès", "Connexion réussie", "OK");
            }
            else if (Mgr.UtilisateurConnecte != null)
            {
                // Utilisateur déjà connecté
                DisplayAlert("Erreur", "Vous êtes déjà connecté", "OK");
            }
            else
            {
                // Informations de connexion incorrectes
                passwordEntry.Text = "";
                DisplayAlert("Erreur", "Nom d'utilisateur ou mot de passe incorrect", "OK");
            }
            passwordEntry.Text = "";
        }

        /// <summary>
        /// Gestionnaire de l'événement lorsqu'on clique sur le bouton LogoutUtilisateur.
        /// </summary>
        /// <param name="sender">L'objet déclencheur de l'événement.</param>
        /// <param name="e">Les arguments de l'événement.</param>
        private void LogoutUtilisateur_Clicked(object sender, EventArgs e)
        {
            // Vérifier si l'utilisateur est connecté
            if (Mgr.UtilisateurConnecte != null)
            {
                // Déconnexion réussie
                Mgr.UtilisateurConnecte = null;
                Logout.IsVisible = false;
                Suprim.IsVisible = false;
                DisplayAlert("Succès", "Déconnexion réussie", "OK");
            }
            else
            {
                // Utilisateur non connecté
                DisplayAlert("Erreur", "Vous n'êtes pas connecté", "OK");
            }

            usernameEntry.Text = "";
            passwordEntry.Text = "";
        }

        /// <summary>
        /// Gestionnaire de l'événement lorsqu'on clique sur le bouton SupprimerUtilisateur.
        /// </summary>
        /// <param name="sender">L'objet déclencheur de l'événement.</param>
        /// <param name="e">Les arguments de l'événement.</param>
        private void SupprimerUtilisateur_Clicked(object sender, EventArgs e)
        {
            // Vérification de la connexion de l'utilisateur
            if (Mgr.UtilisateurConnecte != null)
            {
                // Suppression de l'utilisateur
                Mgr.RemoveUtilisateur(Mgr.UtilisateurConnecte);
                Mgr.UtilisateurConnecte = null;
                Mgr.Sauvdon();
                Logout.IsVisible = false;
                Suprim.IsVisible = false;
                DisplayAlert("Succès", "Compte supprimé avec succès", "OK");
            }
            else
            {
                // Utilisateur non trouvé
                DisplayAlert("Erreur", "Vous n'êtes pas connecté", "OK");
            }

            usernameEntry.Text = "";
            passwordEntry.Text = "";
        }
    }
}
