using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using MauiApp.Core.Business.Contracts; namespace MauiApp.ViewModels; public partial class LoginPageViewModel(IAccountService accountService) : BasePageViewModel { [ObservableProperty] private string _username; [ObservableProperty] private string _password; [ObservableProperty] private string _loginErrorMessage; private readonly IAccountService _accountService = accountService; public override async Task Initialize() { await base.Initialize(); } [RelayCommand] private async Task Login() { if (!Validate()) return; IsBusy = true; try { await accountService.Login(Username, Password); await NavigationService.NavigateAsync(clearStack: true); } catch (Exception ex) { LoginErrorMessage = ex.Message; } IsBusy = false; } private bool Validate() { var hasEmailError = string.IsNullOrWhiteSpace(Username); var hasPasswordError = string.IsNullOrWhiteSpace(Password); if (hasEmailError) { LoginErrorMessage = "Username non valido"; return false; } if (hasPasswordError) { LoginErrorMessage = "Password non valida"; return false; } return true; } }