public bool SendRequestStateChanged(List<int> IdsUsuarios, long Id_Solicitud, int Id_Prensa, StateToSend State)
 {
     return RequestHub.SendRequestStateChanged(IdsUsuarios, Id_Solicitud, Id_Prensa, State);
 }
Beispiel #2
0
        /// <summary>
        /// Envía una notificación de cambio de estado de una solicitud
        /// </summary>
        /// <param name="IdsUsuarios">Listado de usuarios a los que enviar la notificación</param>
        /// <param name="Id_Solicitud">Id de la solicitud generada</param>
        /// <param name="Id_Prensa">Id de la prensa</param>
        /// <param name="State">Estado de la solicitud</param>
        /// <returns>Envío realizado</returns>
        public static bool SendRequestStateChanged(List <int> IdsUsuarios, long Id_Solicitud, int Id_Prensa, StateToSend State)
        {
            ILogger log = LogFactory.GetLogger(typeof(RequestHub));

            bool sw = false;

            try
            {
                var hubContext = GlobalHost.ConnectionManager.GetHubContext <RequestHub>();

                #region Usuarios

                if (IdsUsuarios != null && IdsUsuarios.Count > 0)
                {
                    log.Debug("SendRequestStateChanged. Enviando cambio de estado a los usuarios...");

                    // Envío unos usuarios por identificador
                    foreach (int idUsuario in IdsUsuarios)
                    {
                        log.Debug("SendRequestStateChanged. Enviando cambio de estado para el usuario: {0}", idUsuario);

                        List <string> lstConexiones = SignalRManager.GetInstance.Connections.GetConnectionsIdByUser((int)idUsuario);

                        if (lstConexiones != null && lstConexiones.Count > 0)
                        {
                            foreach (string connectionId in lstConexiones)
                            {
                                if (connectionId != null && connectionId.Length > 0)
                                {
                                    hubContext.Clients.Client(connectionId).SendRequestStateChanged(Id_Solicitud, Id_Prensa, State);

                                    log.Debug("SendRequestStateChanged. Enviada cambio de estado para el usuario: {0} (Id: {1})", connectionId, idUsuario);
                                }
                                else
                                {
                                    log.Warning("SendRequestStateChanged. Sin datos de la conexión (Id: {0})", idUsuario);
                                }
                            }
                        }
                        else
                        {
                            // El usuario no está en la lista de usuarios conectados
                            log.Debug("SendRequestStateChanged. No se puede mandar el cambio de estado al usuario ya que no está autenticado (Id: {0})", idUsuario);
                        }
                    }
                    sw = true;
                }
                #endregion
            }
            catch (Exception er)
            {
                log.Error("SendRequestStateChanged()", er);
            }

            return(sw);
        }