/// <summary>
 /// Erzeuge eine Instanz der Klasse LocalUserController Klasse.
 /// </summary>
 public LocalUserController() 
     : base()
 {
     localUserDB = new LocalUserDatabaseManager();
     userAPI = new UserAPI();
 }
 /// <summary>
 /// Erzeuge eine Instanz der Klasse LocalUserController Klasse mit Validierungsbehandlung.
 /// </summary>
 /// <param name="validationErrorReporter">Eine Referenz auf die Realsierung des IValidationErrorReport Interfaces.</param>
 public LocalUserController(IValidationErrorReport validationErrorReporter)
     : base(validationErrorReporter)
 {
     localUserDB = new LocalUserDatabaseManager();
     userAPI = new UserAPI();
 }
        /// <summary>
        /// Gibt den lokalen Nutzer zurück. Liefert null zurück wenn kein lokaler
        /// Nutzer definiert ist. Da diese Methode in allen ViewModel Klassen benötigt wird
        /// ist sie in der abstrakten Basisklasse implementiert.
        /// </summary>
        /// <returns>Instanz der User Klasse, oder null wenn kein lokaler Nutzer definiert ist.</returns>
        /// <exception cref="ClientException">Wirft ClientException, wenn beim Ermitteln des lokalen Nutzers ein Fehler aufgetreten ist.</exception>
        protected User getLocalUser()
        {
            // Frage zuerst das lokale Nutzerobjekt aus dem Cache ab.
            User localUser = LocalUser.GetInstance().GetCachedLocalUserObject();
            if (localUser == null)
            {
                // Lokales Nutzerobjekt noch nicht im Cache. Frage es aus der DB ab.
                try
                {
                    Debug.WriteLine("Retrieve local user object from DB.");
                    LocalUserDatabaseManager localUserDB = new LocalUserDatabaseManager();
                    localUser = localUserDB.GetLocalUser();

                    // Speichere Objekt im Cache.
                    LocalUser.GetInstance().CacheLocalUserObject(localUser);
                }
                catch (DatabaseException ex)
                {
                    Debug.WriteLine("Database exception occurred in GetLocalUser(). Message of exception is: " + ex.Message);
                    // Abbilden des aufgetretenen Fehlers auf eine ClientException.
                    // TODO - hier Exception werfen?
                    //throw new ClientException(ErrorCodes.LocalDatabaseException, "Retrieval of local user account has failed.");
                }
            }
            else
            {
                Debug.WriteLine("Retrieved local user object from cache.");
            }

            return localUser;
        }