Exemplo n.º 1
0
        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);
                }
            }
        }
Exemplo n.º 2
0
 public CategoriasController()
 {
     _categoriasBusiness = new CategoriasBusiness();
 }