public async Task SuscribeToNotifications(string userId, string tipoPerfil) { if (string.IsNullOrWhiteSpace(userId)) { throw new ArgumentNullException("userId no puede estar vacio!,"); } if (string.IsNullOrWhiteSpace(tipoPerfil)) { throw new ArgumentNullException("tipoPerfil no puede estar vacio!,"); } TipoPerfil tipoPerfilEnum = tipoPerfil.ToEnum <TipoPerfil>(); CategoriasBusiness categoriaBusiness = new CategoriasBusiness(); List <int> listaCategorias = null; // Se consultan las categorias de la persona conectandose switch (tipoPerfilEnum) { case TipoPerfil.Candidato: listaCategorias = await categoriaBusiness.ListarCodigoCategoriasDeUnCandidato(Convert.ToInt32(userId)); break; case TipoPerfil.Grupo: listaCategorias = await categoriaBusiness.ListarCodigoCategoriasDeUnGrupo(Convert.ToInt32(userId)); break; case TipoPerfil.Representante: listaCategorias = await categoriaBusiness.ListarCodigoCategoriasDeUnRepresentante(Convert.ToInt32(userId)); break; } // Se valida que no halla error al consultar if (listaCategorias == null) { throw new InvalidOperationException("Fallo al consultar las categorias!."); } // Verifico que tengo categorias a las que me suscribire por cambios if (listaCategorias.Count > 0) { // Por cada categoria verifico que ya no este suscrito, si lo estoy la remuevo (Evito escuchar doble) // Y procedo a suscribirme foreach (var categorias in listaCategorias) { await Groups.Remove(Context.ConnectionId, _prefixNotificationsGroupName + categorias); await Groups.Add(Context.ConnectionId, _prefixNotificationsGroupName + categorias); } } }