using System.ComponentModel; using System.Runtime.CompilerServices; using System.Windows.Input; namespace MaUI; public partial class AuthLogin_VM : INotifyPropertyChanged { #region Variables private readonly ApiService _apiService; #endregion #region Propriétés #region Commands public ICommand ValiderCommand { get; set; } public ICommand AnnulerCommand { get; } #endregion #region Element de saisie private LoginModel _selectedItem = null!; public LoginModel SelectedItem { get => _selectedItem; set { _selectedItem = value; OnPropertyChanged(); //MettreAJourSelection(); } } #endregion #endregion #region Constructeur public AuthLogin_VM() { SelectedItem = new(); ValiderCommand = new Command(ExecuterValidation); AnnulerCommand = new Command(ExecuterAnnulation); _apiService = new ApiService(); } #endregion #region Méthodes actions private async void ExecuterAnnulation() { if (Application.Current?.MainPage != null) { bool reponse = await Application.Current.MainPage.DisplayAlert( "Confirmation", "Voulez-vous vraiment annuler les modifications ?", "Oui", "Non"); if (reponse) { // Retour à la page précédente //await Application.Current.MainPage.Navigation.PopAsync(); } } } private async void ExecuterValidation() { if (Application.Current?.MainPage != null) { if (SelectedItem != null) { bool rep = false; string msg = ""; rep = await _apiService.Connexion(SelectedItem); if (!rep) { msg = "Votre connexion est refusée."; await Application.Current.MainPage.DisplayAlert("Erreur", msg, "OK"); } else { _selectedItem = new LoginModel(); await Application.Current.MainPage.Navigation.PushAsync(new MainPage()); } } } } #endregion #region Implémentation de INotifyPropertyChanged public event PropertyChangedEventHandler? PropertyChanged; protected virtual void OnPropertyChanged([CallerMemberName] string? propertyName = null) { if (propertyName is null) return; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } #endregion } #region Autres classes public class LoginModel { public string Username { get; set; } = string.Empty; public string Password { get; set; } = string.Empty; } public class LoginResponse { public string Token { get; set; } = string.Empty; } #endregion