[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Denison Augusto Silva
Criador Denison Augusto Silva 14/05/2023

Como eu faria no caso, se eu quiser enviar uma notificação pra um array de usuários? 

Manager Carlos Ferreira 14/05/2023

Olá, Denilson!

Tudo bem?

 

Sua ideia seria para algo mais ou menos um chat, certo?

Enviar uma mensagem para um grupo de usuários, isso mesmo?

 

Nesse caso é até mais fácil, porque basta enviar a mensagem para o "chat_id", usando um channel privado.

 

No curso de LaraChat explico com mais detalhes estes conceitos, acredito que está bem de acordo com o que precisa.

Carlos Ferreira
Criador Denison Augusto Silva 14/05/2023

A ideia é enviar a notificação somente para usuários de uma role específica. Ex: Tenho 3 roles: rh, técnico, supervisor.

Quando o técnico criar um dado em uma entidade especifica, quero que avise somente os usuários que possuem a role supervisor, que foi criado um dado no banco de dados.

Ao acho q saiu um pouco do escopo de chat. No exemplo do curso tu faz com exemplo com post criado. é como se a notificação do post criado chegasse somente para as pessoas que já comentaram naquele post ou algo assim entendeu ?

Denison Augusto Silva
Manager Carlos Ferreira 14/05/2023

Entendi amigo.

 

A dinâmica de PrivateChannel aplicada no LaraChat é exatamente o que você precisa, o que você vai precisar é justamente entender a dinâmica, e aplicar, e se tiver qualquer dúvida, conta comigo amigo.

Carlos Ferreira
Criador Denison Augusto Silva 14/05/2023

Opa Carlos Jóia? vamos ver se eu entendi, se eu estiver errado me corrija. Estou falando da aula 06 do Módulo 7 (chat).

 

Segundo a lógica ali. Por volta de 6:37 eu preciso no lugar de passar o receiver_id eu passo meu array de id. 

Ai no arquivo de rotas do canal eu fasso tipo assim.

foreach($users as $usr)

    return $user->id === $usr


É isso ?

Denison Augusto Silva
Criador Denison Augusto Silva 14/05/2023

Eu consegui, mas por favor verifica se existi uma maneira melhor de fazer.

Evento:

https://prnt.sc/6XkIPeMTKCyC

Echo.js

https://prnt.sc/o4yHaWuWZXtw

Dessa maneira não usei privateChannel se tiver uma maneira melhor de fazer por favor me aconselhe.

Denison Augusto Silva
Manager Carlos Ferreira 14/05/2023

Que bom que conseguiu, meus parabéns.

O que é este Work_Permission? Um Model? O que faz com essa classe?

Está trabalhando com PHP >=8, certo?

Usa promoção de atributos:

public function __construct(

protected NomeClasse $nomeAtributo,

) {}

Depois basta fazer em qualquer método $this->nomeAtributo

--

Por que usou o query builder (DB), e não o Eloquent (models)?

--

Normalmente (não é regra) quando dispara um evento, ele recebe estes dados já no construtor, raramente precisa fazer uma query no próprio event.

Carlos Ferreira
Criador Denison Augusto Silva 14/05/2023

-> WorkPermission é um model de criação de permissoes de trabalho.

-> Sim PHP >= 8

-> usei DB::table para users pois usar a Model direto por User:: estava dando erro, que user nao estava declarado mesmo ele sendo chamado.

-> usei DB::table em model_has_roles pois é uma pivot criada pela lib Spatie para criação de roles e permissions e ela não tem model.

 

A entendi voce ta falando pra mim passar o pluck com os ids de usuários la na chamada do evento pelo Observer né ?

 

Eu percebi q todo usuário que loga ja acessa esse channel criado é assim mesmo? tem alguma maneira para melhorar isso.

 

Hoje tenho 4 roles abri as 4 e só enviou para a role que era pra enviar. No geral ta funcionando só queria saber se tem como melhorar isso la no back. Por que a validação do usuário no fazendo la no Echo.js

Denison Augusto Silva
Manager Carlos Ferreira 14/05/2023

Boa amigo.

Sempre tem como melhorar, se olhar o código 100x sempre vai achar algo para melhorar rsrsrs

--

Como está usando PHP > 8, trabalha com promoção de atributos:
public function __construct(
    protected NomeClasse $nomeAtributo,
) {}
Depois basta fazer em qualquer método $this->nomeAtributo

--

Procura passar os dados para o event, no construtor, assim você fica com menos querys esparramadas pelo código.

Carlos Ferreira
Criador Denison Augusto Silva 14/05/2023

ok

Denison Augusto Silva
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!