As personas e os chamados

Para continuar nosso sistema, vamos inserir a possibilidade de nossos clientes solicitarem serviços, que denominaremos chamados.

Assista o vídeo e leia a "cola" a seguir.

A ideia inicial é que nossos clientes entrem em contato com nossa empresa (ainda não temos um nome e estamos aceitando sugestões), seja por telefone ou pessoalmente. Um atentende verificará se o cliente já possui cadastro e se não possuir é criado um para ele. Ele, então, solicitará o serviço, que será apontado no sistema, prevendo a data e hora da visita do técnico.

O técnico, então, terá acesso aos chamados destinados a ele e os executará, informando a data efetiva da execução, inserindo observações quanto ao trabalho executado, valores cobrados, etc. Iniciamos a criação desses papéis através de grupos de usuários e visualizações. A efetivação dos usuários será feita posteriormente, bem como a adequação de permissões nos formulários, listas etc.

A criação do formulário de cadastro de chamados é tranquila e vocês podem executar sem maiores problemas, podendo, inlusive, acrescentar informações.

acrescentamos ao nosso Joomla um plugin chamado Direct PHP (https://extensions.joomla.org/extension/directphp/) que nos permite inserir códigos php em nossos artigos e módulos HTML Personalizados. Parar tal, instale e ative o plugin. Com isso criamos uma pasta em nosso filesystem (scripts) e nela colocamos um  arquivo PHP (historico_cliente.php) que tem por objetivo ler a tabela de clientes e montar uma lista de clientes com links personalizados para o histórico de chamados de cada cliente. A chamada a esse arquivo é feita diretamente de dentro de um artigo, com as seguintes instruções:

<?php
insert 'scripts/historico_cliente.php';
?>

No Arquivo historico_cliente.php inserimos o sequinte código: 

<?php
$db = JFactory::getDbo();
$query = $db->getQuery(true);

$query
->select('id')
->select('nome')
->from('clientes')
->order('nome');

$db->setQuery($query);

$results = $db->loadObjectList();

// Montando a Lista de Clientes

foreach ($results as $cliente) {
echo "<a href='/fabrik/listagem-de-chamados?id=".$cliente->id."'>".$cliente->nome."</a><br/>";
    }
?>

Mais informações de como acessar tabelas usando o JDatabase em: https://docs.joomla.org/Selecting_data_using_JDatabase

Com isso, bastou criar um item de menu para que nosso artigo fosse apresentado e a lista renderizada. Para cada cliente, existe um link personalizado, que termina com a passagem do id desse cliente através do método GET.

Na lista temos que realizar algum procedimento para que ao ser acessada, possa verificar esse parâmetro informado e utilizá-lo como filtro na listagem das informações. Pesquisei na documentação do Fabrik e verifiquei que basta criar, no pré-filtro da lista, um filtro assim:

pre filtro get

Em Elementos escolhemos a coluna Cliente(raw), haja vista que ela é quem guarda a informação do id do cliente. A coluna Cliente guarda o nome (veja nas aulas anteriores).

Condição de ser setada para igual e em Valor inserimos a expressão que captura o valor passado através da viriável id.

return JRequest::getVar('id');

Tipo deve ser setado para Eval.

Com isso, ao criarmos o link já informamos o valor de id, permitindo que a lista possa identificá-lo e apresentar somente os chamados do cliente em questão.

Essa lista de clientes foi feita de uma forma bem simples, mas poderíamos fazê-la como um formulário, com um SelectBox e encaminhar esse parâmetro pelo link do formulário. Fica como sugestão e dever de casa! Quem quiser fazer, manda o link pra mim que eu substituo no site.

Obrigado por acompanhar e apoiar o curso!