Bloquear Rota temporariamente

André Cabral Criador 02/10/2019
André Cabral

Tenho a seguinte situação em um sistema de telemarketing:

O usuario irá acessar uma rota específica do contato para efetuar um atendimento, porém quando ele estiver acessando essa rota outro atendente não poderá acessar aquela rota, daquele contato ao mesmo tempo.

Uma das opções é criar um campo no BD, mas corre o risco do usuário não concluir o atendimento.

Preciso bloquear de alguma forma temporária até a finalização do atendimento.

 

Alguém tem alguma ideia ou caminho pra eu resolver isoo?

 

 

Manager Carlos Ferreira 02/10/2019
Carlos Ferreira

Olá, André!
Tudo bem?

Existem alguns caminhos possível para resolver isso.

Você pode criar um lógica onde o atendente libera ou não esse "chat", usando justamente esse lógica que você sugeriu.
Você tem uma tabela de atendimento, e quando iniciar você marca que o atendimento está andamento, e quando o atendente finalizar o atendimento ele precisa liberar a sala, marcando que concluiu aquela sessão.

E você controla o acesso com middlewares, baseado nesse status...

Entendeu a ideia?

----------------

A outra alternativa possível seria trabalhando com real-time ( o curso de Laravel com Vue.js real-time pode te ajudar nisso )

Criador André Cabral 03/10/2019
André Cabral

Carlos, teria como exemplificar utilizando middlewares ?

 

Manager Carlos Ferreira 03/10/2019
Carlos Ferreira

Primeiro, você cria o Middleware, e aplica esse Middleware na rota do chat. Até aqui tudo bem?

O middleware pode ficar assim:
public function handle($request, Closure $next)
{
    // Pega o último registro da sala de bate papo
    $chat = NomeModelControlaOChat::latest()->first();

    // Verifica se a sala de chat está oculpada
    if ($chat->busy) {
        return redirect('chat-ocupado');
    }

    return $next($request);
}

Agora você cria essa rota "chat-ocupado" que exibe alguma view que informa que o chat está ocupado.

Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!