/// <summary> /// Erzeugt eine Instanz der Klasse ReminderDetailsViewModel. /// </summary> /// <param name="navService">Eine Referenz auf den Navigationsdienst der Anwendung.</param> /// <param name="errorMapper">Eine Referenz auf den Fehlerdienst der Anwendung.</param> public ReminderDetailsViewModel(INavigationService navService, IErrorMapper errorMapper) : base(navService, errorMapper) { channelController = new ChannelController(); moderatorController = new ModeratorController(); // Befehle anlegen. SwitchToEditReminderDialogCommand = new RelayCommand( param => executeSwitchToEditReminderCommand(), param => canSwitchToEditReminderCommand()); DeleteReminderCommand = new AsyncRelayCommand( param => executeDeleteReminderCommand(), param => canDeleteReminder()); ActivateReminderCommand = new AsyncRelayCommand( param => executeActivateReminderCommand(), param => canActivateReminder()); DeactivateReminderCommand = new AsyncRelayCommand( param => executeDeactivateReminderCommand(), param => canDeactivateReminder()); SynchronizeReminderCommand = new AsyncRelayCommand( param => executeSynchronizeReminderCommand(), param => canSynchronizeReminder()); }
/// <summary> /// Behandelt eine eingehende Push Nachricht vom Typ MODERATOR_ADDED. Fügt den /// betroffenen Moderator als Verantwortlichen zu dem angegebenen Kanal hinzu. /// </summary> /// <param name="msg">Die empfangene Push Nachricht.</param> /// <returns>Liefert true, wenn Behandlung erfolgreich, ansonsten false.</returns> private async Task<bool> handleModeratorAddedPushMsgAsync(PushMessage msg) { // Lese die Kanal-Id des betroffenen Kanals aus. int channelId = msg.Id1; // Lese die Moderator-Id des betroffenene Moderator aus. int moderatorId = msg.Id2; try { // Frage Moderatorendatensätze des Kanals ab. List<Moderator> moderators = await channelController.GetResponsibleModeratorsAsync(channelId); if (moderators != null) { foreach (Moderator moderator in moderators) { if (moderator.Id == moderatorId) { ModeratorController moderatorController = new ModeratorController(); if (!moderatorController.IsModeratorStored(moderatorId)) { Debug.WriteLine("handleModeratorAddedPushMsgAsync: Need to store moderator with id {0} first.", moderator.Id); // Speichere den Moderator zunächst ab. moderatorController.StoreModerator(moderator); } // Füge den Moderator dem Kanal hinzu. channelController.AddModeratorToChannel(channelId, moderator); } } } } catch (ClientException ex) { // Keine weitere Fehlerbehandlung hier, da dies Operationen im Hintergrund ablaufen. Debug.WriteLine("handleModeratorAddedPushMsgAsync: Handling of Moderator_Added push message failed. Message is {0}.", ex.Message); return false; } return true; }