Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        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
            {
            }
        }