public static async Task Run(IMonitorsRepository monitorsRepository, IMonitorLogsRepository monitorLogsRepository, IMonitoringService monitoringService, IPushNotificationService pushNotificationService, IPushNotificationTokensRepository pushNotificationTokensRepository) { await monitoringService.Monitor(null, monitorsRepository, monitorLogsRepository); var applicationUserMonitors = monitoringService.GetFailedMonitors(); await pushNotificationService.SendPushNotifications(applicationUserMonitors, pushNotificationTokensRepository); }
public AuthenticationController(UserManager <ApplicationUser> userManager, SignInManager <ApplicationUser> signInManager, IUserRepository userRepository, IPushNotificationTokensRepository pushNotificationTokensRepository, IOptions <TokenOptions> tokens, ILogger <AuthenticationController> logger) : base(userManager, logger) { _signInManager = signInManager; _userRepository = userRepository; _tokenOptions = tokens.Value; _pushNotificationTokensRepository = pushNotificationTokensRepository; }
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); }
public MessagingService() { _locationUsersRepository = new LocationUsersRepository(); _pushNotificationTokensRepository = new PushNotificationTokensRepository(); }