private void update(object state) { var sessionProvider = ProviderFactory.Instance.CreateSessionServiceProvider(); if (SignalRNotifier.Instance.usersThatAreAlreadyReceievingNotifications.Contains(userLoginEmail)) { try { var session = AuthenticationMethods.GetSessionData(sessionToken); if (session == null || !sessionProvider.CheckIfSessionIsValid(sessionToken) || sessionProvider.GetSessionInformation(sessionToken) == null || !sessionProvider.CheckIfSessionExists(sessionToken)) { GlobalHost.ConnectionManager.GetHubContext <NotificationsHub>().Clients.Group(userLoginEmail).sessionExpired(new { redirectTo = GlobalProperties.LOGIN_PAGE }); SignalRNotifier.Instance.usersThatAreAlreadyReceievingNotifications.Remove(userLoginEmail); SignalRNotifier.Instance.usersThatAreAlreadyReceievingNewDashboardData.Remove(userLoginEmail); notificationTimer.Dispose(); } /* * var notificationsTransaction = new TransactionalInformation(); * var response = mainDataservice.GetNotificationData(connectionString, sessionToken, out notificationsTransaction); * * if (notificationsTransaction.ReturnStatus) * { * if (!SignalRNotifier.Instance.lastSentNotificationData.ContainsKey(sessionToken) || SignalRNotifier.Instance.lastSentNotificationData[sessionToken].AnyTileDataChanged(response)) * { * * if (!SignalRNotifier.Instance.lastSentNotificationData.ContainsKey(sessionToken)) * SignalRNotifier.Instance.lastSentNotificationData.Add(sessionToken, response); * else * SignalRNotifier.Instance.lastSentNotificationData[sessionToken] = response; * * GlobalHost.ConnectionManager.GetHubContext<NotificationsHub>().Clients.Group(userLoginEmail).updateNotifications(response); * * } * } */ } catch (Exception ex) { GlobalHost.ConnectionManager.GetHubContext <NotificationsHub>().Clients.Group(userLoginEmail).sessionExpired(new { redirectTo = GlobalProperties.LOGIN_PAGE }); SignalRNotifier.Instance.usersThatAreAlreadyReceievingNotifications.Remove(userLoginEmail); SignalRNotifier.Instance.usersThatAreAlreadyReceievingNewDashboardData.Remove(userLoginEmail); notificationTimer.Dispose(); } } else { SignalRNotifier.Instance.usersThatAreAlreadyReceievingNewDashboardData.Remove(userLoginEmail); notificationTimer.Dispose(); } }
private void verifySessionAndUpdateNotifications(object state) { try { var sessionProvider = ProviderFactory.Instance.CreateSessionServiceProvider(); if (SignalRNotifier.Instance.usersThatAreAlreadyReceievingNotifications.Contains(userLoginEmail)) { foreach (var sessionToken in SignalRNotifier.Instance.userSessionTokens) { try { var session = AuthenticationMethods.GetSessionData(sessionToken); if (session == null || !sessionProvider.CheckIfSessionIsValid(sessionToken) || !sessionProvider.CheckIfSessionExists(sessionToken)) { SignalRNotifier.Instance.lastSentNotificationData.Remove(sessionToken); GlobalHost.ConnectionManager.GetHubContext <SessionHub>().Clients.Group(sessionToken).sessionExpired(new { redirectTo = GlobalProperties.LOGIN_PAGE }); SignalRNotifier.Instance.usersThatAreAlreadyReceievingNotifications.Remove(userLoginEmail); sessionTimer.Dispose(); } var transaction = new TransactionalInformation(); var response = mainDataservice.GetNotificationData(connectionString, sessionToken, out transaction); if (transaction.ReturnStatus) { if (!SignalRNotifier.Instance.lastSentNotificationData.ContainsKey(sessionToken) || SignalRNotifier.Instance.lastSentNotificationData[sessionToken].AnyTileDataChanged(response)) { if (!SignalRNotifier.Instance.lastSentNotificationData.ContainsKey(sessionToken)) { SignalRNotifier.Instance.lastSentNotificationData.Add(sessionToken, response); } else { SignalRNotifier.Instance.lastSentNotificationData[sessionToken] = response; } GlobalHost.ConnectionManager.GetHubContext <SessionHub>().Clients.Group(userLoginEmail).updateNotifications(response); } } } catch { SignalRNotifier.Instance.lastSentNotificationData.Remove(sessionToken); if (userLoginEmail != null) { GlobalHost.ConnectionManager.GetHubContext <SessionHub>().Clients.Group(sessionToken).sessionExpired(new { redirectTo = GlobalProperties.LOGIN_PAGE }); SignalRNotifier.Instance.usersThatAreAlreadyReceievingNotifications.Remove(userLoginEmail); } sessionTimer.Dispose(); } } } else { sessionTimer.Change(Timeout.Infinite, Timeout.Infinite); sessionTimer.Dispose(); } } catch { } }