Browse Source

Adicionando primeira versao da documentacao

pull/1/head
guilherme guia 1 year ago
parent
commit
4ff344c1c9
  1. 176
      README.MD

176
README.MD

@ -0,0 +1,176 @@
# Integração Simples IP
Este projeto foi desenvolvida afim de padronizar e melhorar a forma de integrar sistemas de provedores de internet com a central Simples IP.
## 💻 Requisitos
Para rodar os scripts é necessário uma versão em execução da central Simples IP.
## Projeto
O desenvolvimento da aplicação seguiu alguns princípios de arquitetura estabelicidos pelos desenvolvedores.
## Estrutura do projeto
O projeto foi estruturado em algumas pastas e cada uma contém sua responsabilidade específica.
![Estrutura do projeto](https://i.imgur.com/BSExpWz.png)
### CONFIG
Começando pela pasta config, ela irá conter arquivos de configurações geral do projeto como constantes de valores, caminhos de arquivos entre outros.
Também, é encontrado o arquivo de instanciação das classes de providers.
![Pasta config](https://i.imgur.com/5znMxjo.png)
### CORE
Na pasta core, é encontrado as partes principais para o funcionamento da aplicação.
![Pasta core](https://i.imgur.com/0fM5Cpr.png)
### Classe de integração com banco (IntegracaoDatabase.php)
A Classe IntegracaoDatabase é responsável por:
* Comunicação com o banco de dados Postgresql.
### Classe de integração (Integracao.php)
A Classe Integracao é responsável por:
* Realizar chamadas a outras classes como o banco de dados, AGI (Asterisk Gateway Interface) e CURL.
* Fornece uma interface padronizada para a chamadas das classes auxiliares.
* Fornecer métodos e funcionalidades comuns que podem ser estendidos por outras classes.
### Classe de Provedores (Provedores.php)
A classe de Provedores é um componente fundamental do projeto que atua como um intermediador entre os scripts e os providers da aplicação. Ela é uma subclasse da classe "Integração", herdando funcionalidades importantes para o processo de integração.
* Coordenar a comunicação entre os scripts e os providers da aplicação.
* Gerenciar a execução dos scripts e a integração com os diferentes providers.
* Fornecer uma interface padronizada para os scripts se comunicarem com os providers.
* Manipular e transformar os dados entre os scripts e os providers, se necessário.
## HELPERS
Na pasta helpers, é encontrado os arquivos auxiliares genéricos que podem ser usados no projeto.
![Pasta helpers](https://i.imgur.com/r2O89Zk.png)
### Classe Helper (Helpers.php)
A classe Helpers é responsável por armazenar métodos genéricos de formatação de data, validação de algum dado ou transformação de dados, que podem facilitar o desenvolvimento.
## INTERFACES
Na pasta de Interfaces, é encontrado os arquivos que definem interfaces do sistema.
![Pasta interfaces](https://i.imgur.com/BbPast7.png)
### Interfacede provedores (IProvedores.php)
A interface de provedores é responsável por definir de forma obrigatória o que todas as classes providers devem possuir.
## PROVIDERS
Na pasta de providers, é encontrado os arquivos de implementação da lógica de cada provedor de internet, no qual cada um é representado por um arquivo.
![Pasta providers](https://i.imgur.com/vVSqybg.png)
### Implementação Específica
Cada provedor tem liberdade para implementar suas funcionalidades de forma independente. Eles podem ter diferenças na forma como se comunicam com a aplicação e como lidam com as solicitações de integração. No entanto, todos os provedores devem seguir a interface padrão estabelecida pela inteface IProvedor para garantir a integração correta com o restante do sistema.
### Substituição Fácil
A estrutura modular da pasta "Provedores" permite que novos provedores sejam adicionados ou provedores existentes sejam substituídos facilmente. Ao seguir a interface padrão, os provedores podem ser trocados sem afetar o restante do código, proporcionando maior flexibilidade e extensibilidade à aplicação.
### Interface com a Classe CASE
A Classe CASE é responsável por intermediar a chamada de scripts com o restante da aplicação. Assim, Cada provedor é chamado pela Classe CASE usando os métodos apropriados para executar suas funcionalidades específicas.
## SCRIPTS
A pasta scripts contém os scripts procedurais genéricos que atuam como intermediários entre a aplicação e os provedores de internet. Esses scripts recebem ordens e tomam decisões com base nos valores recebidos, redirecionando o usuário para ações específicas.
Cada script representa uma ação que irá acontecer.
![Pasta scripts](https://i.imgur.com/LY2oajC.png)
### Descrição
* Receber comandos ou ordens de outras partes do sistema.
* Redirecionar o usuário para ações específicas com base nos valores retornados.
* Fazer uso da Classe CASE para coordenar a comunicação com os provedores de internet.
### Exemplo de funcionamento
Primeiramente todos os scripts devem contem em seu topo a chamada do arquivo de configuração, e também do arquivo CASE.
```php
require_once __DIR__.'/../config/config.php';
require_once CONF_RAIZ_PROJETO . '/core/Provedores.php';
```
Logo depois, devemos instanciar o provedor Case e também armazenar qual provedor estamos utilizando na integração.
Todo o processo de verificação e validação de qual provedor deverá ser utilizado é totalmente dinâmico e acontece dentro do CASE.
```php
$provedorCase = new ProvedorCase($uid);
$provedor = $provedorCase->getProvedor();
```
Com isso, coletamos algumas variáveis que iremos utilizar no script. Nesse caso, necessitamos saber quais foram os números que o usuário digitou e a quantidade de tentativas.
```php
$documento = $provedorCase->agi()->get_variable('URA', true);
$reg_pass = $provedorCase->agi()->get_variable("REG_PASS", true);
```
Então, temos a chamada da função de consultar documento que recebe um array associativo de params, que nesse script foi o CPF e a quantidade de tentativas
```php
$result = $provedor->consultarDocumento(["documento" => $documento, "reg_pass" => $reg_pass]);
```
Nessa parte, temos a coleta da versão da integração que está sendo utilizada.
```php
$data_sistema = $provedorCase->data()->getData();
$versao_integracao = $data["int_versao"];
```
Por fim, temos o encerramento do script onde ele faz o direcionamento do usuário depedendo do valor que foi retornado.
```php
if($result && $result !== "reg_pass"){
$redirecionamento_dados = $provedorCase->db()->redirectUraDestino("REDIR_CONSULTA_CLIENTE", "SUCESSO", $versao_integracao);
}else if($result == "reg_pass"){
$redirecionamento_dados = $provedorCase->db()->redirectUraDestino("REDIR_CONSULTA_CLIENTE", "ALTERNATIVO", $versao_integracao);
} else{
$redirecionamento_dados = $provedorCase->db()->redirectUraDestino("REDIR_CONSULTA_CLIENTE", "FALHA", $versao_integracao);
}
$provedorCase->executarFluxo($redirecionamento_dados["TIPO"], $redirecionamento_dados["NOME"]);
```
## Tecnologias
* **PHP**
* **AGI**
* **PHP Mailer**
* **Postgresql**
Loading…
Cancel
Save