Example #1
0
        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}");
                }
            }
        }
Example #2
0
        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);
 }