/// <summary>
 /// Creates the appropriate View Model for the selected View Type
 /// </summary>
 public ViewModelBase CreateVM(ViewType type)
 {
     return(type switch
     {
         ViewType.Login => _loginFactory.CreateVM(),
         ViewType.Home => _homeFactory.CreateVM(),
         ViewType.Customers => _customersFactory.CreateVM(),
         ViewType.Appointments => _appointmentsFactory.CreateVM(),
         ViewType.Addresses => _addressesFactory.CreateVM(),
         _ => throw new ArgumentException("View Type doesn't match a VM"),
     });
    public async void Execute(object parameter)
    {
      if (!_loginVM.HasErrors)
      {
        bool? login = await _authService.Login(new LoginDTO(_loginVM.Username, _loginVM.Password));

        switch (login)
        {
          case false:
            _loginVM.Message = _loginVM.Info == "en" ?
              "Incorrect Username or Password" : "Identifiant ou mot de passe incorrect";
            break;
          case null:
            _loginVM.Message = _loginVM.Info == "en" ?
              "Database could not be reached" : "La base de données n'a pas pu être atteinte";
            break;
          case true:
            _loginVM.Message = _loginVM.Info == "en" ? "Success" : "Succès";
            _navigator.CurrentVM = _appointmentVMFactory.CreateVM();
            break;
        }
      }
    }