private void GenerateButton_Click(object sender, EventArgs e) { Clear(); SaveFileDialog fileDialog = new SaveFileDialog(); fileDialog.InitialDirectory = Environment.CurrentDirectory; fileDialog.Filter = "JSON File (*.json)|*.json"; fileDialog.FilterIndex = 0; if (fileDialog.ShowDialog() == DialogResult.OK) { StreamWriter writer = new StreamWriter(fileDialog.FileName, false); m_LoadedSettings = new SubscriberNotificationSetting(); string defaultJSON = JsonConvert.SerializeObject(m_LoadedSettings, Formatting.Indented); writer.Write(defaultJSON); writer.Flush(); writer.Close(); if (m_LoadedSettings != null) { m_UserGroup.Visible = true; m_GenerateGroup.Visible = false; m_UserCB.Items.Clear(); m_MessageTypeCB.SelectedIndex = 0; Log($"Generated JSON file at {fileDialog.FileName}"); } } }
private void OpenButton_Click(object sender, EventArgs e) { Clear(); OpenFileDialog ofd = new OpenFileDialog(); ofd.InitialDirectory = Environment.CurrentDirectory; ofd.Filter = "JSON Files (*.json)|*.json"; ofd.FilterIndex = 0; if (ofd.ShowDialog() == DialogResult.OK) { StreamReader reader; if ((reader = new StreamReader(ofd.OpenFile())) != null) { string rawJson = reader.ReadToEnd(); SubscriberNotificationSetting tempSettings = JsonConvert.DeserializeObject <SubscriberNotificationSetting>(rawJson); reader.Close(); if (tempSettings != null) { m_LoadedSettings = tempSettings; } } } if (m_LoadedSettings != null) { m_GenerateGroup.Visible = false; m_UserGroup.Visible = true; m_UserGroup.Visible = m_LoadedSettings.SubscriberMessages.Count > 0; if (m_LoadedSettings.SubscriberMessages.Count > 0) { m_SaveButton.Visible = true; m_UserCB.Items.Clear(); foreach (KeyValuePair <string, SubscriberMessage> user in m_LoadedSettings.SubscriberMessages) { m_UserCB.Items.Add(user.Key); } m_UserCB.SelectedIndex = 0; m_MessageTypeCB.SelectedIndex = 0; } Log($"Loaded Settings ({ofd.FileName})"); } else { Log($"Failed to load file ({ofd.FileName})"); } }
private static void EnsureBroadcastNotificaitonsConfiguration(TdPushNotificationContext context) { var broadcastUserSettings = context.SubscriberPushNotificationSettingsManager .GetSettingsForSubscriberAsync("new ticket broadcast").Result; var broadcastAppSettings = context.TicketDeskPushNotificationSettings.BroadcastSettings; if (broadcastUserSettings == null) { broadcastUserSettings = new SubscriberNotificationSetting { SubscriberId = "new ticket broadcast" }; context.SubscriberPushNotificationSettingsManager.AddSettingsForSubscriber(broadcastUserSettings); } if ( broadcastAppSettings.BroadcastMode == ApplicationPushNotificationSetting.PushNotificationBroadcastMode.CustomAddress && !string.IsNullOrEmpty(broadcastAppSettings.SendToCustomEmailAddress) ) { broadcastUserSettings.PushNotificationDestinations.Add( new PushNotificationDestination { SubscriberId = "new ticket broadcast", DestinationAddress = broadcastAppSettings.SendToCustomEmailAddress, DestinationType = "email", SubscriberName = broadcastAppSettings.SendToCustomEmailDisplayName } ); } else { var userManager = DependencyResolver.Current.GetService <TicketDeskUserManager>(); var roleManager = DependencyResolver.Current.GetService <TicketDeskRoleManager>(); var usersForNotification = roleManager.GetTdHelpDeskUsers(userManager) .Union(roleManager.GetTdTdAdministrators(userManager)) .Distinct(new UniqueNameEmailDisplayUserEqualityComparer()).ToArray(); var existingDestinations = broadcastUserSettings .PushNotificationDestinations .Where(pnd => pnd.DestinationType == "email" && pnd.SubscriberId == "new ticket broadcast") .ToArray(); //remove users not in list anymore var usersToRemove = existingDestinations .Where(us => !usersForNotification .Any(un => un.Email == us.DestinationAddress && un.DisplayName == us.SubscriberName)) .ToList(); foreach (var us in usersToRemove) { broadcastUserSettings.PushNotificationDestinations.Remove(us); } //add users in list, but not already in destinations foreach (var nu in usersForNotification) { if (!existingDestinations.Any(ed => nu.Email == ed.DestinationAddress && nu.DisplayName == ed.SubscriberName)) { broadcastUserSettings.PushNotificationDestinations.Add( new PushNotificationDestination { SubscriberId = "new ticket broadcast", DestinationAddress = nu.Email, DestinationType = "email", SubscriberName = nu.DisplayName } ); } } } broadcastUserSettings.IsEnabled = broadcastAppSettings.IsBroadcastEnabled; context.SaveChanges(); }
public void AddSettingsForSubscriber(SubscriberNotificationSetting settings) { NotificationContext.SubscriberPushNotificationSettings.Add(settings); }