public ApplicationUserMonitors GetFailedMonitors()
        {
            var applicationUserMonitors = new ApplicationUserMonitors();

            foreach (var monitor in _failedMonitors)
            {
                if (!monitor.Triggered)
                {
                    applicationUserMonitors.Add(monitor);
                }
            }

            return(applicationUserMonitors);
        }
Esempio n. 2
0
        public async Task SendPushNotifications(ApplicationUserMonitors applicationUserMonitors,
                                                IPushNotificationTokensRepository pushNotificationTokensRepository)
        {
            var pushMessages = new List <PushMessage>();

            foreach (var key in applicationUserMonitors)
            {
                var user = key.Key;

                if (user.PushNotificationsEnabled == false)
                {
                    continue;
                }

                var monitors = key.Value;

                var monitorDescriptions
                    = monitors.Cast <Monitor>()
                      .Select(monitor => monitor.OutageDescription.Trim())
                      .ToArray();

                var downSites = string.Join(", ", monitorDescriptions);

                var pushNotificationTokens
                    = await pushNotificationTokensRepository.GetUserPushNotificationTokens(user);

                foreach (var token in pushNotificationTokens)
                {
                    var message = new PushMessage
                    {
                        To    = token.Token,
                        Body  = $"The following sites are down: {downSites}",
                        Title = "Site outage detected"
                    };

                    pushMessages.Add(message);
                }
            }

            await Send(pushMessages);
        }