Pesquisa Básica

1. Geral

Nesta documentação, você aprenderá a criar uma Pesquisa de Satisfação no Mitra, utilizando como referência o template de projeto "Pesquisa Básica". Este material aborda em detalhes a configuração de inputs, a ação de envio de e-mails e outras funcionalidades essenciais para a implementação do fluxo da pesquisa.

Para aproveitar ao máximo este guia, recomendamos revisar as documentações de Cadastro Básico, Cadastro Detalhado e Fluxo de Processos, onde são explicadas as etapas fundamentais para a criação de um CRM e um CRUD com Detalhes. Com esse conhecimento, você estará preparado para aprofundar-se nos conceitos mais complexos apresentados aqui.

2. Videoaulas de Referência

Esta documentação foi desenvolvida com base em três vídeos da série "Pesquisa de Satisfação", que estão disponíveis a seguir:

  • Parte 1

  • Parte 2

  • Parte 3

3. Passo a Passo para Criar uma Pesquisa de Satisfação

Partindo do princípio que você já tenha aprendido a criar um CRUD, seu detalhamento e um CRM, vamos aprender agora a configurar uma Pesquisa Básica de Satisfação.

3.1. Primeiro Passo

Crie um novo projeto e importe para o seu banco de dados os dados das planilhas disponibilizadas a seguir:

Caso precise de mais detalhes sobre a configuração da importação de arquivos CSV, consulte a documentação de Conexões ou a seção de FAQs sobre Importação de Dados CSV.

Em seguida, crie as seguintes tabelas adicionais para estruturar a pesquisa:

  • Tabela: Colaborador

    • ID

    • Descrição (Nome ou identificação do colaborador)

  • Tabela: Status

    • ID

    • Descrição (Indica o status da resposta, como "Pendente" ou "Concluída")

  • Tabela: Resposta

    • ID

    • Descrição

    • FK de Colaborador (Chave estrangeira vinculando ao colaborador que respondeu)

    • FK de Status (Chave estrangeira indicando o status da resposta: Pendente ou Concluída)

  • Tabela de Chave Composta: Itens Resposta

    • ID Composta: Cadastro Resposta

    • ID Composta: Cadastro Pergunta

    • Itens Resposta (Registro das respostas associadas às perguntas)

Esta tabela será utilizada para registrar a relação entre as respostas e as perguntas da pesquisa. Para mais detalhes sobre tabelas de chave compostas, acesse a documentação de Database.

3.2. Segundo Passo

No menu Interface, crie uma nova tela para o questionário, atribua um nome e selecione o modelo "Formulário". Após a criação, remova os componentes que não serão necessários garantindo que a interface fique mais objetiva e alinhada ao fluxo da pesquisa.

3.3. Terceiro Passo

Como a tela de questionário será filtrada com base na resposta do colaborador, adicione um seletor temporário de resposta na tela para simular essa seleção durante o desenvolvimento. Esse seletor permitirá testar o comportamento do filtro antes da implementação definitiva, garantindo que as respostas sejam carregadas corretamente.

3.4. Quarto Passo

Crie o design inicial da primeira seção de perguntas e utilize variáveis de filtro para definir dinamicamente o nome do colaborador na label, ajustando-o automaticamente com base na resposta selecionada.

View da Label do Nome do Colaborador:

SELECT DESCR_COLABORADORES
FROM CAD_RESPOSTAS
WHERE ID = :

3.5. Quinto Passo

Configure o layout do input seletor de botão para a primeira pergunta, garantindo que cada opção de resposta retorne os seguintes atributos:

  • ID: Identificador único da resposta.

  • Descrição: Texto associado à opção de resposta.

  • Ícone: Representação visual da opção, tornando a interface mais intuitiva.

Além disso, filtre as opções de resposta de acordo com o grupo ao qual a pergunta pertence. Por exemplo, a primeira pergunta pertence ao grupo "Satisfação" com ID = 1, logo, apenas as opções desse grupo devem ser exibidas.

Tipos de opções para o Input da Primeira pergunta:

SELECT ID, DESCR, ICONS
FROM CAD_1003
WHERE ID_GRUPO_OPCOES = 1

3.6. Sexto Passo

Configure o conteúdo inicial do input da primeira pergunta, garantindo que a opção selecionada e salva pelo colaborador seja exibida automaticamente.

Essa configuração assegura que a resposta previamente armazenada seja recuperada e apresentada corretamente ao usuário, proporcionando uma experiência contínua e intuitiva.

Conteúdo Inicial do Input da Primeira pergunta:

SELECT CAST(ROUND(ITEM_RESPOSTAS, 0) AS UNSIGNED) AS VALOR
FROM CC_64
WHERE ID_RESPOSTAS = :ID_RESPOSTAS
AND ID_PERGUNTAS = 1

3.7. Sétimo Passo

Crie o input para a segunda pergunta e configure seu conteúdo inicial, garantindo que a opção selecionada seja exibida corretamente.

Tipos de opções para o Input da Segunda pergunta:

SELECT ID, DESCR, ICONS
FROM CAD_1003
WHERE ID_GRUPO_OPCOES = 2

Conteúdo Inicial do Input da Segunda pergunta:

SELECT CAST(ROUND(ITEM_RESPOSTAS, 0) AS UNSIGNED) AS VALOR
FROM CC_64
WHERE ID_RESPOSTAS = :ID_RESPOSTAS
AND ID_PERGUNTAS = 2

Após essa configuração, repita o processo para as nove perguntas seguintes. Lembre-se de ajustar o grupo de opções e o ID da pergunta correspondente, garantindo que apenas as opções relevantes sejam exibidas para cada questão.

Somente após a conclusão dessas etapas, avance para o próximo passo.

3.8. Oitavo Passo

Crie um botão de salvar e adicione três ações de database para gerenciar os itens de respostas de cada pergunta.

  • Ação 1 - Remover Respostas Anteriores: Configure uma ação para deletar todos os itens de respostas previamente cadastrados, filtrando por resposta. Esse processo evita conflitos e inconsistências, garantindo que os dados sejam sempre atualizados corretamente.

    • A remoção é necessária porque a tabela Itens Resposta utiliza chaves compostas, impedindo a duplicação de registros para a mesma resposta e pergunta.

    • Script da Ação de Remover Respostas Anteriores:

      DELETE FROM CC_64
      WHERE ID_RESPOSTAS = :
      
      
  • Ação 2 - Salvar Respostas: Após a exclusão dos dados antigos, configure uma segunda ação para registrar os novos itens de respostas de cada pergunta. Isso assegura que apenas os novos registros sejam persistidos no banco de dados, mantendo a integridade das informações.

    • Script da Ação de Salvar Respostas:

      INSERT INTO CC_64 (ID_RESPOSTAS, ID_PERGUNTAS, ITEM_RESPOSTAS)
      SELECT :ID_RESPOSTAS AS ID_RESPOSTAS, 1 AS ID_PERGUNTAS, :INPUT__390 AS ITEM_RESPOSTAS
      FROM DUAL
      UNION ALL
      SELECT :ID_RESPOSTAS AS ID_RESPOSTAS, 2 AS ID_PERGUNTAS, :INPUT__392 AS ITEM_RESPOSTAS
      FROM DUAL
      UNION ALL
      SELECT :ID_RESPOSTAS AS ID_RESPOSTAS, 3 AS ID_PERGUNTAS, :INPUT__393 AS ITEM_RESPOSTAS
      FROM DUAL
      UNION ALL
      SELECT :ID_RESPOSTAS AS ID_RESPOSTAS, 4 AS ID_PERGUNTAS, :INPUT__394 AS ITEM_RESPOSTAS
      FROM DUAL
      UNION ALL
      SELECT :ID_RESPOSTAS AS ID_RESPOSTAS, 5 AS ID_PERGUNTAS, :INPUT__395 AS ITEM_RESPOSTAS
      FROM DUAL
      UNION ALL
      SELECT :ID_RESPOSTAS AS ID_RESPOSTAS, 6 AS ID_PERGUNTAS, :INPUT__396 AS ITEM_RESPOSTAS
      FROM DUAL
      UNION ALL
      SELECT :ID_RESPOSTAS AS ID_RESPOSTAS, 7 AS ID_PERGUNTAS, :INPUT__397 AS ITEM_RESPOSTAS
      FROM DUAL
      UNION ALL
      SELECT :ID_RESPOSTAS AS ID_RESPOSTAS, 8 AS ID_PERGUNTAS, :INPUT__398 AS ITEM_RESPOSTAS
      FROM DUAL
      UNION ALL
      SELECT :ID_RESPOSTAS AS ID_RESPOSTAS, 9 AS ID_PERGUNTAS, :INPUT__399 AS ITEM_RESPOSTAS
      FROM
      
      


  • Ação 3 - Atualizar o Status da Resposta: Após salvar as novas respostas, crie uma terceira ação para alterar o status da resposta de "Pendente" para "Concluída". Essa atualização indicará que o colaborador finalizou o questionário, garantindo um acompanhamento correto do progresso.

    • Script da Ação de Atualizar o Status da Resposta:

      UPDATE CAD_1007
      SET ID_STATUS_RESPOSTA = 1
      WHERE ID = :
      
      

3.9. Nono Passo

Configure a funcionalidade para desabilitar o botão de salvar caso o status da resposta já esteja como "Concluída". Essa configuração garantirá que o botão permaneça ativo apenas quando a resposta ainda não tiver sido submetida, evitando alterações indevidas após a finalização do questionário.

Desabilitar Botão de Salvar Questionário:

SELECT CASE WHEN ID_STATUS_RESPOSTA = 1 THEN 0 ELSE 1 END AS COND
FROM CAD_1007
WHERE ID = :

3.10. Décimo Passo

Agora é o momento de configurar o disparo de e-mails e gerar novas respostas para cada e-mail enviado.

Para isso, primeiro crie os seguintes atributos:

  • Tabela: Colaborador

    • Email Colaborador (campo que armazenará o endereço de e-mail do colaborador).

  • Tabela: Respostas

    • Email Pendente (campo que receberá o valor 1 quando uma nova resposta for gerada, indicando que um e-mail precisa ser enviado).

      • Após o envio do e-mail, esse campo será resetado (limpado) para evitar que sejam enviados e-mails para respostas já existentes.

Depois de criar esses atributos, crie uma nova tela para gerenciar e configurar os disparos de e-mails.

3.11. Décimo Primeiro Passo

Crie uma tabela que exiba os dados de cada resposta criada, permitindo visualizar as informações de forma organizada.

View da Tabela de Histórico das Respostas:

SELECT ID, DESCR_COLABORADORES AS 'Colaborador', 
DESCR_STATUS_RESPOSTA AS 'Status Resposta',
DATA_CRIACAO_RESPOSTAS AS 'Data do Disparo'
FROM CAD_RESPOSTAS WHERE ID > 0
ORDER BY DATA_CRIACAO_RESPOSTAS DESC

3.12. Décimo Segundo Passo

Adicione e configure um input do tipo checkbox para selecionar os colaboradores que receberão o e-mail com o questionário.

Tipos de opções para o Input dos Colaboradores:

SELECT ID, DESCR FROM CAD_1006 
WHERE ID >0 AND EMAIL IS NOT NULL AND EMAIL <> ""

Conteúdo Inicial do Input dos Colaboradores:

SELECT ID, DESCR FROM CAD_1006 
WHERE ID >0 AND EMAIL IS NOT NULL AND EMAIL <> ""

3.13. Décimo Terceiro Passo

Para criar os registros de resposta e disparar os e-mails, crie um botão de enviar e-mails e adicione uma ação com os seguintes passos:

  • Passo 0 - Criar/Alterar Registro: Configure uma ação para criar registros de respostas para cada colaborador marcado no checkbox. Preencha o atributo Email Pendente com o valor 1, marcando que essas respostas estão aguardando o envio do e-mail.

    • SQL Configurado:

      SELECT DESCR AS DESCR, ID AS ID_COLABORADORES,
        -999 AS ID_STATUS_RESPOSTA, 1 AS EMAIL_PENDENTE
      FROM CAD_1006
      WHERE ID IN (:INPUT__400)
      AND EMAIL IS NOT NULL AND EMAIL <> ''


  • Passo 1 - Enviar Email: Configure a View do envio de e-mail, filtrando apenas as respostas onde Email Pendente = 1. Estruture o e-mail com variáveis dinâmicas da View e inclua um link dinâmico para a tela do questionário.

    • View Configurada:

      SELECT R.ID, C.EMAIL, C.DESCR AS NOME
      FROM  CAD_1007 R
      INNER JOIN CAD_1006 C ON R.ID_COLABORADORES = C.ID
      WHERE EMAIL IS NOT NULL AND EMAIL <> ''
      AND EMAIL_PENDENTE = 1


  • Passo 2 - Limpar Atributo: Após o envio do e-mail, configure um passo de ação para limpar o atributo Email Pendente, garantindo que os registros já processados não sejam enviados novamente.

  • Passo 3 - Recarregar Tela: Atualiza a tela para exibir os novos dados e garantir que as informações estejam sincronizadas.

Após configurar todas as ações, teste o fluxo completo para garantir que os e-mails estão sendo enviados corretamente e que os registros são gerenciados sem erros.

3.14. Resultado Final

Com esses trezes passos, sua Pesquisa de Satisfação estará pronta! Seguindo esse fluxo, você aprenderá como montar o template "Pesquisa Básica" no Mitra de maneira simples e eficiente.

Procurar

Procurar