public ApplicationUserMonitors GetFailedMonitors() { var applicationUserMonitors = new ApplicationUserMonitors(); foreach (var monitor in _failedMonitors) { if (!monitor.Triggered) { applicationUserMonitors.Add(monitor); } } return(applicationUserMonitors); }
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); }