/// <summary>
 /// Erzeugt eine Instanz der Klasse GroupController.
 /// </summary>
 /// <param name="errorReporter">Eine Referenz auf eine Realisierung des IValidationErrorReport Interface.</param>
 public GroupController(IValidationErrorReport errorReporter)
     : base(errorReporter)
 {
     groupAPI = new GroupAPI();
     jsonParser = new JsonParsingManager();
     groupDBManager = new GroupDatabaseManager();
     userController = new UserController();
 }
 /// <summary>
 /// Erzeugt eine Instanz der Klasse GroupController.
 /// </summary>
 public GroupController()
     : base()
 {
     groupAPI = new GroupAPI();
     jsonParser = new JsonParsingManager();
     groupDBManager = new GroupDatabaseManager();
     userController = new UserController();
 }
        /// <summary>
        /// Gibt den Namen des Teilnehmers zurück, der über die angegebene Id identifziert wird.
        /// </summary>
        /// <param name="participantId">Die Id des Teilnehmers.</param>
        /// <returns>Der Name des Teilnehmers.</returns>
        private string getParticipantName(int participantId)
        {
            string participantName = string.Empty;

            try
            {
                UserController userController = new UserController();
                User user = userController.GetUser(participantId);
                if (user != null)
                {
                    participantName = user.Name;
                }
            }
            catch (ClientException ex)
            {
                Debug.WriteLine("getConversationTitle: Couldn't extract participant name.");
                Debug.WriteLine("Msg is: {0}.", ex.Message);
            }

            return participantName;
        }
        /// <summary>
        /// Behandelt eine eingehende Nachricht vom Typ USER_CHANGED. 
        /// Ruft den neusten Datensatz des Nutzers ab und aktualisiert die lokalen Datensätze.
        /// </summary>
        /// <param name="msg">Die empfangene Push Nachricht.</param>
        /// <returns>Liefert true, wenn Behandlung erfolgreich, ansonsten false.</returns>
        private async Task<bool> handleUserChangedPushMsgAsync(PushMessage msg)
        {
            int userId = msg.Id1;

            try
            {
                UserController userController = new UserController();
                User affectedUser = await userController.GetUserAsync(userId);

                if (affectedUser != null)
                {
                    List<User> tmpUsers = new List<User>();
                    tmpUsers.Add(affectedUser);
                    
                    // Verwende Operation, die abhängig von den lokalen Datensätzen entweder den 
                    // Nutzer einfügt oder den Datensatz aktualisiert.
                    userController.AddOrUpdateUsers(tmpUsers);
                }
            }
            catch (ClientException ex)
            {
                // Keine weitere Fehlerbehandlung hier, da dies Operationen im Hintergrund ablaufen.
                Debug.WriteLine("Handling of UserChanged push message failed. Message is {0}.", ex.Message);
                return false;
            }

            return true;
        }