Inhalt
Aktueller Ordner:
duesseldorfer-schuelerinventar-xcodeLoginViewModel.cs
using DüsseldorferSchülerinventar.Models;
using DüsseldorferSchülerinventar.Services;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
namespace DüsseldorferSchülerinventar.ViewModels
{
public partial class LoginViewModel : ObservableObject
{
private readonly ApiService _apiService;
[ObservableProperty]
private string _username;
[ObservableProperty]
private string _password;
[ObservableProperty]
private bool _isBusy;
[ObservableProperty]
private string _errorMessage;
public bool IsNotBusy => !IsBusy;
public bool HasErrorMessage => !string.IsNullOrEmpty(ErrorMessage);
public LoginViewModel(ApiService apiService)
{
_apiService = apiService;
}
[RelayCommand]
private async Task Login()
{
if (IsBusy) return;
try
{
IsBusy = true;
ErrorMessage = string.Empty;
if (string.IsNullOrWhiteSpace(Username) || string.IsNullOrWhiteSpace(Password))
{
ErrorMessage = "Bitte Benutzername und Passwort eingeben";
return;
}
var user = await _apiService.Login(Username, Password);
if (user != null)
{
// Erfolgreiche Anmeldung
await Shell.Current.GoToAsync($"//{nameof(MainMenuView)}");
}
else
{
ErrorMessage = "Anmeldung fehlgeschlagen";
}
}
catch (Exception ex)
{
ErrorMessage = $"Fehler: {ex.Message}";
}
finally
{
IsBusy = false;
}
}
[RelayCommand]
private async Task NavigateToRegister()
{
await Shell.Current.GoToAsync(nameof(RegisterView));
}
public void ResetState()
{
Username = string.Empty;
Password = string.Empty;
ErrorMessage = string.Empty;
IsBusy = false;
}
}
}