Ad Code

Responsive Advertisement

PEDEaí: Inovação e Autonomia no Marketing da Fametro”

 Auto cadastro e Gerenciamento de Demandas com Tecnologia GLPI


O projeto PEDEaí surge como uma solução inovadora no cenário do marketing educacional, trazendo autonomia e eficiência para o grupo Fametro. Com a implementação do sistema GLPI, o setor de marketing agora possui uma ferramenta poderosa para rastrear e controlar as demandas com precisão e agilidade.

Auto cadastro e Integração: A chave para a independência do sistema é o módulo de auto cadastro, que permite aos funcionários da Fametro a liberdade de se registrar no GLPI sem intervenção manual. Este processo é estruturado em três códigos PHP principais, que juntos, formam a espinha dorsal do sistema de auto cadastro:

1. Conexão com o Banco de Dados: Este script estabelece uma conexão segura com o banco de dados, garantindo que todas as operações de cadastro sejam realizadas de forma protegida.

<?php
// Conectar ao banco de dados do glpi
$servername = "localhost";
$username = "*****";
$password = "********";
$dbname = "*****";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}
else {
  echo"<div display='none'>
    <script type='text/javascript'>
        console.log('Parabéns!! A conexão ao banco de dados ocorreu normalmente!.');
    </script>
</div>";
}
?>



2. Validação e Pesquisa: Após a conexão, o sistema realiza pesquisas no banco para validar informações críticas como nome da empresa, cargo e setor, assegurando que os dados inseridos correspondam aos critérios estabelecidos.

<?php
       // Incluir o arquivo conexao.php
       include("conexao.php");

       
       // Fazer uma consulta SQL para selecionar os dados da tabela glpi_entities
        $sql_entidades = "SELECT id, name FROM glpi_entities";

        // Executar a consulta e armazenar o resultado
        $resultado_entidades = mysqli_query($conn, $sql_entidades);

        // Fazer uma consulta SQL para selecionar os dados da tabela glpi_usercategories
        $sql_categorias = "SELECT id, name FROM glpi_usercategories";

        // Executar a consulta e armazenar o resultado
        $resultado_categorias = mysqli_query($conn, $sql_categorias);

        // Fazer uma consulta SQL na tabela glpi_locations para retornar os setores cadastrados no banco
        $sql_locations = "SELECT id, name FROM glpi_locations";

        // Executar a consulta e armazenar o resultado
        $resultado_locations = mysqli_query($conn, $sql_locations);
?>


3. Formulário de Cadastro e Inserção de Usuários:  O último passo é o formulário de cadastro, criado com HTML e CSS para uma experiência de usuário fluida e amigável. O backend em PHP cuida da inserção dos dados no banco, com verificações de duplicidade, segurança da senha e criptografia.

<html>
<head>
  <title>Cadastro de usuário</title>
  <style>
    /* Estilos para o formulário */
    form {
      width: 350px;
      margin: 50px auto;
      padding: 20px;
      border: 1px solid #dbdbdb;
      border-radius: 5px;
      font-family: Arial, sans-serif;
      background-color: white;
      box-shadow: 0 1px 2px rgba(0,0,0,0.1);
    }

    h1 {
      text-align: center;
      font-size: 28px;
      color: #262626;
    }

    label {
      display: block;
      margin-bottom: 10px;
      font-weight: bold;
    }

    input, select {
      width: 100%;
      padding: 9px;
      border: 1px solid #dbdbdb;
      border-radius: 3px;
      font-size: 14px;
      margin-bottom: 5px;
    }

    input:focus, select:focus {
      width: 100%;
      outline: none;
      border-color: #0095f6;
    }

    button {
      display: block;
      width: 100%;
      padding: 9px;
      background-color: #0095f6;
      color: white;
      border: none;
      border-radius: 3px;
      font-size: 14px;
      font-weight: bold;
    }

    button:hover {
      background-color: #0084f4;
    }

    button:disabled {
      background-color: #b2dffc;
    }
    body {
      /* Usar uma imagem de fundo */
      background-image: url("/pics/image/bg.jpg");
     
      /* Fazer a imagem cobrir toda a página */
      background-size: cover;

      /* Centralizar a imagem */
      background-position: center;
    }
    /*Estilizar a mensagem de resposta do processamento no banco*/

  </style>
  <link rel="shortcut icon" type="images/x-icon" href="/pics/favicon.ico" />
</head>

<body>
  <!-- Incluir o arquivo form.php -->
  <?php  include("pesquisa.php");?>
 
 
  <!-- Link para voltar à página home -->

 
  <!-- Formulário php -->
  <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
    <!-- Link para voltar à página home -->
    <a href="https://marketing.fametro.edu.br">Ir para Login</a>

    <h1>Cadastro de Usuário</h1>
    <label for="email">Email:</label>
    <input type="email" id="email" name="email" required>
    <label for="nome">Nome:</label>
    <input type="text" id="nome" name="nome" required>
    <label for="sobrenome">Sobrenome:</label>
    <input type="text" id="sobrenome" name="sobrenome" required>
    <label for="usuario">Usuário:</label>
    <input type="text" id="usuario" name="usuario" required>
    <label for="senha">Senha:</label>
    <input type="password" id="senha" name="senha" required>
    <label for="confirmacao">Confirme a senha:</label>
    <input type="password" id="confirmacao" name="confirmacao" required>

    <!-- Campo entidade -->
    <label for="entidade">Empresa:</label>
    <select id="entidade" name="entidade" required>
      <!-- Opções de entidades disponíveis -->
      <option value="">Selecione a empresa</option>
      <?php
      // Percorrer os resultados da consulta de entidades
      while ($row_entidades = mysqli_fetch_array($resultado_entidades)) {
        // Criar uma opção com o valor e o nome da entidade
        echo "<option value='" . $row_entidades['id'] . "'>" . $row_entidades['name'] . "</option>";
      }
      ?>      
    </select>

     
    <!-- Campo categoria -->
    <label for="categoria">Cargo:</label>
    <select id="categoria" name="categoria" required>
      <!-- Opções de categorias disponíveis -->
      <option value="">Selecione o cargo</option>
      <?php
      // Percorrer os resultados da consulta de categorias
      while ($row_categorias = mysqli_fetch_array($resultado_categorias)) {
        // Criar uma opção com o valor e o nome da categoria
        echo "<option value='" . $row_categorias['id'] . "'>" . $row_categorias['name'] . "</option>";
      }
      ?>
    </select>


    <!-- Campo Localização -->
    <label for="setor">Setor:</label>
    <select id="setor" name="setor" required>
      <!-- Opções de setores disponíveis -->
      <option value="">Selecione o setor</option>
      <?php
      // Percorrer os resultados da consulta de setores
      while ($row_setores = mysqli_fetch_array($resultado_locations)) {
        // Criar uma opção com o valor e o nome dos setores
        echo "<option value='" . $row_setores['id'] . "'>" . $row_setores['name'] . "</option>";
      }
      ?>
    </select>


   
    <button type="submit" name="submit">Cadastrar</button>
   
    <!-- Div para exibir a mensagem de resultado -->
    <div id="mensagem"></div>
    <div style="margin-top:5px;"> <a href="https://marketing.fametro.edu.br/front/lostpassword.php?lostpassword=1">Esqueceu a senha?</a></div>
  </form>

  <?php

  // Incluir o arquivo conexao.php
  include("conexao.php");

  if (isset($_POST["submit"])) {

    // Verificar se os dados do formulário foram enviados
    if (isset($_POST["email"]) && isset($_POST["nome"]) && isset($_POST["sobrenome"]) && isset($_POST["usuario"]) && isset($_POST["senha"]) && isset($_POST["confirmacao"]) && isset($_POST["categoria"]) && isset($_POST["entidade"])&& isset($_POST["setor"])) {
      // Obter os dados do formulário
      $email = $_POST["email"];
      $nome = $_POST["nome"];
      $sobrenome = $_POST["sobrenome"];
      $usuario = $_POST["usuario"];
      $senha = $_POST["senha"];
      $confirmacao = $_POST["confirmacao"];
      $categoria = $_POST["categoria"];
      $entidade = $_POST["entidade"];
      $setor = $_POST["setor"];

      // Verificar se o email ou o usuário já existem no banco de dados
      $sql = "SELECT u.id FROM glpi_users u JOIN glpi_useremails e ON u.id = e.users_id WHERE e.email = '$email' OR u.name = '$usuario'";
      $result = $conn->query($sql);

      if ($result->num_rows > 0) {
        // O email ou o usuário já existem, mostrar uma mensagem de erro
        echo "<style>#mensagem {margin-top:5px; background-color: #f0f0f0; padding: 10px; border-radius: 5px; color: red;}</style>";
        echo "<script>document.getElementById('mensagem').innerHTML = 'Esse email ou usuário já estão cadastrados.';</script>";

      } else {
        // O email e o usuário não existem
       
        //verificar se o domínio do email está nos cadastros da tabela glpi_entities na coluna mail_domain
        // Extrair o domínio do email
        $dominio = substr($email, strpos($email, "@") + 1);

        // Verificar se o domínio existe na tabela glpi_entities
        $sql = "SELECT id FROM glpi_entities WHERE mail_domain LIKE '%$dominio%'";
        $result = $conn->query($sql);

        if ($result->num_rows > 0) {
            // O domínio existe na tabela glpi_entities,
           
            //verificar se as senhas são iguais

            if ($senha == $confirmacao) {
            // As senhas são iguais, criptografar a senha usando a função password_hash
            $senha_criptografada = password_hash($senha, PASSWORD_DEFAULT);

            // Fazer uma consulta na tabela glpi_profiles para obter o id da função Self-Service
            $sql = "SELECT id FROM glpi_profiles WHERE name = 'Self-Service'";
            $result = $conn->query($sql);

            if ($result->num_rows > 0) {
                // A função Self-Service existe, obter o id
                $row = $result->fetch_assoc();
                $profile_id = $row["id"];
                // Inserir os dados na tabela glpi_users com a senha criptografada, os parâmetros categoria e entidade e o profile_id
               
                $sql = "INSERT INTO glpi_users (name, password, realname, firstname, locations_id, authtype, usercategories_id, entities_id, profiles_id) VALUES ('$usuario', '$senha_criptografada', '$nome', '$sobrenome', '$setor', '1','$categoria', '$entidade', '$profile_id')";

                if ($conn->query($sql) === TRUE) {
                // Os dados foram inseridos com sucesso, obter o id do usuário inserido
                $user_id = $conn->insert_id;
                // Inserir o email na tabela glpi_useremails
               
                $sql = "INSERT INTO glpi_useremails (users_id, is_default, is_dynamic, email) VALUES ('$user_id', '1', '0' , '$email')";
                if ($conn->query($sql) === TRUE) {
                    // O email foi inserido com sucesso, atribuir a autorização Self-Service ao usuário na tabela glpi_profiles_users usando o id obtido
                    $sql = "INSERT INTO glpi_profiles_users (users_id, profiles_id, entities_id, is_recursive ) VALUES ('$user_id', '$profile_id', '$entidade', '1')";
                    if ($conn->query($sql) === TRUE) {
                    // A autorização foi atribuída com sucesso, mostrar uma mensagem de confirmação

                    echo "<style>#mensagem {margin-top:5px; background-color: #f0f0f0; padding: 10px; border-radius: 5px; color: green;}</style>";
                    echo "<script>document.getElementById('mensagem').innerHTML = 'Usuário cadastrado e autorizado com sucesso.';</script>";

                    } else {
                    // Houve um erro ao atribuir a autorização, mostrar uma mensagem de erro

                    echo "<style>#mensagem {margin-top:5px; background-color: #f0f0f0; padding: 10px; border-radius: 5px; color: red;}</style>";
                    echo "<script>document.getElementById('mensagem').innerHTML = 'Erro ao atribuir autorização: " . $conn->error . "';</script>";

                    }
                } else {
                    // Houve um erro ao inserir o email, mostrar uma mensagem de erro
                    echo "<style>#mensagem {margin-top:5px; background-color: #f0f0f0; padding: 10px; border-radius: 5px; color: red;}</style>";
                    echo "<script>document.getElementById('mensagem').innerHTML = 'Erro ao cadastrar email: " . $conn->error . "';</script>";
                   
                }
                } else {
                // Houve um erro ao inserir os dados na tabela glpi_users, mostrar uma mensagem de erro
                echo "<style>#mensagem {margin-top:5px; background-color: #f0f0f0; padding: 10px; border-radius: 5px; color: red;}</style>";
                echo "<script>document.getElementById('mensagem').innerHTML = 'Erro ao cadastrar usuário: " . $conn->error . "';</script>";
                }
            } else {
                // A função Self-Service não existe, mostrar uma mensagem de erro
                echo "<style>#mensagem {margin-top:5px; background-color: #f0f0f0; padding: 10px; border-radius: 5px; color: red;}</style>";
                echo "<script>document.getElementById('mensagem').innerHTML = 'A função Self-Service não foi encontrada.';</script>";

            }
            } else {
            // As senhas não são iguais, mostrar uma mensagem de erro
            echo "<style>#mensagem {margin-top:5px; background-color: #f0f0f0; padding: 10px; border-radius: 5px; color: red;}</style>";
            echo "<script>document.getElementById('mensagem').innerHTML = 'As senhas não conferem.';</script>";

            }
        } else {
            // O domínio não existe na tabela glpi_entities, mostrar uma mensagem de erro

            echo "<style>#mensagem {margin-top:5px; background-color: #f0f0f0; padding: 10px; border-radius: 5px; color: red;}</style>";
            echo "<script>document.getElementById('mensagem').innerHTML = 'Esse domínio de e-mail não está autorizado, é permitido cadastro somente de e-mail institucional.';</script>";
   
        }    
      }
    } else {
      // Os dados do formulário não foram enviados, mostrar uma mensagem de erro
      echo "<style>#mensagem {margin-top:5px; background-color: #f0f0f0; padding: 10px; border-radius: 5px; color: red;}</style>";
      echo "<script>document.getElementById('mensagem').innerHTML = 'Por favor, preencha todos os campos do formulário.';</script>";
   
    }

  }
  // Fechar a conexão com o banco de dados
  $conn->close();

  ?>
</body>
</html>


4. Monitoramento e Relatórios: Além do auto cadastro, o PEDEaí oferece uma visão geral dos atendentes e suas funções através de uma interface dedicada, reforçando a transparência e o controle sobre o fluxo de trabalho.


5. Impacto e Resultados: Com mais de 1600 chamados, 13 empresas cadastradas e mais de 21 mil movimentações, o PEDEaí não apenas otimiza o processo de atendimento, mas também promove uma cultura de autoatendimento e responsabilidade entre os colaboradores. 




A criação de um formulário de cadastro simplificado é um exemplo de como o projeto facilita a vida dos demandantes, permitindo que eles registrem suas solicitações de maneira rápida e descomplicada.




Conclusão:

O projeto PEDEaí é um exemplo brilhante de como a tecnologia pode ser aplicada para melhorar a eficiência e a autonomia em ambientes corporativos. Através da implementação do sistema de auto cadastro GLPI, o grupo Fametro estabeleceu um novo padrão para o gerenciamento de demandas de marketing, proporcionando aos funcionários as ferramentas necessárias para um controle mais ágil e preciso de suas atividades. 

Este avanço não só reflete o compromisso da Fametro com a inovação, mas também destaca a importância de adaptar soluções tecnológicas para atender às necessidades específicas de uma equipe dinâmica. Com o PEDEaí, o grupo Fametro não apenas simplifica processos internos, mas também abre caminho para futuras melhorias e desenvolvimentos no campo do marketing educacional.


Receba nossas atualizações

* obrigatório
Seu melhor e-mail

Postar um comentário

0 Comentários

Ad Code

Responsive Advertisement

Uma parceria de projetos incríveis

Vamos começar um Projeto Juntos?

Solicite orçamento

Seu projeto merece ficar em boas mãos, conte comigo para isso. Tem todas informações e está preparado? Então vamos começar!

🔒 Ao enviar o formulário, eu declaro que estou de acordo com a Política de Privacidade.