From 0e95dffdc0b7a76499ce9ec2c2d215bd49ad09a1 Mon Sep 17 00:00:00 2001 From: GabrielPintoSouza Date: Tue, 24 Sep 2024 08:23:54 -0300 Subject: [PATCH 01/11] =?UTF-8?q?Transfer=C3=AAncia=20da=20p=C3=A1gina=20g?= =?UTF-8?q?ateway=5Fpagamento.php=20para=20a=20nova=20estrutura=20de=20dir?= =?UTF-8?q?et=C3=B3rios=20do=20m=C3=B3dulo=20de=20contribui=C3=A7=C3=A3o?= =?UTF-8?q?=20[Issue=20#727]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/GatewayPagamentoController.php | 115 +++++++ html/apoio/controller/TesteController.php | 8 + html/apoio/controller/control.php | 33 ++ html/apoio/dao/ConexaoDAO.php | 9 + html/apoio/dao/GatewayPagamentoDAO.php | 108 +++++++ html/apoio/model/GatewayPagamento.php | 168 +++++++++++ .../public/css/contribuicao-configuracao.css | 82 +++++ html/apoio/public/js/configuracoesGerais.js | 53 ++++ html/apoio/public/js/gatewayPagamento.js | 32 ++ html/apoio/view/gateway_pagamento.php | 281 ++++++++++++++++++ html/apoio/view/teste.php | 16 + 11 files changed, 905 insertions(+) create mode 100644 html/apoio/controller/GatewayPagamentoController.php create mode 100644 html/apoio/controller/TesteController.php create mode 100644 html/apoio/controller/control.php create mode 100644 html/apoio/dao/ConexaoDAO.php create mode 100644 html/apoio/dao/GatewayPagamentoDAO.php create mode 100644 html/apoio/model/GatewayPagamento.php create mode 100644 html/apoio/public/css/contribuicao-configuracao.css create mode 100644 html/apoio/public/js/configuracoesGerais.js create mode 100644 html/apoio/public/js/gatewayPagamento.js create mode 100644 html/apoio/view/gateway_pagamento.php create mode 100644 html/apoio/view/teste.php diff --git a/html/apoio/controller/GatewayPagamentoController.php b/html/apoio/controller/GatewayPagamentoController.php new file mode 100644 index 00000000..07564b3f --- /dev/null +++ b/html/apoio/controller/GatewayPagamentoController.php @@ -0,0 +1,115 @@ +cadastrar(); + header("Location: ../view/gateway_pagamento.php?msg=cadastrar-sucesso"); + } catch (Exception $e) { + header("Location: ../view/gateway_pagamento.php?msg=cadastrar-falha"); + } + } + + /** + * Realiza os procedimentos necessários para buscar os gateways de pagamento da aplicação + */ + public function buscaTodos() + { + try { + $gatewayPagamentoDao = new GatewayPagamentoDAO(); + $gateways = $gatewayPagamentoDao->buscaTodos(); + return $gateways; + } catch (PDOException $e) { + echo 'Erro na busca de gateways de pagamento: ' . $e->getMessage(); + } + } + + /** + * Realiza os procedimentos necessários para remover um gateway de pagamento do sistema. + */ + public function excluirPorId() + { + $gatewayId = trim($_POST['gateway-id']); + + if (!$gatewayId || empty($gatewayId) || $gatewayId < 1) { + //parar operação + header("Location: ../view/gateway_pagamento.php?msg=excluir-falha#mensagem-tabela"); + exit(); + } + + try { + $gatewayPagamentoDao = new GatewayPagamentoDAO(); + $gatewayPagamentoDao->excluirPorId($gatewayId); + header("Location: ../view/gateway_pagamento.php?msg=excluir-sucesso#mensagem-tabela"); + } catch (Exception $e) { + header("Location: ../view/gateway_pagamento.php?msg=excluir-falha#mensagem-tabela"); + } + //echo 'O id do gateway que será excluído é: '.$gatewayId; + } + + /** + * Realiza os procedimentos necessários para alterar as informações de um gateway de pagamento do sistema + */ + public function editarPorId() + { + $gatewayId = $_POST['id']; + $gatewayNome = $_POST['nome']; + $gatewayEndepoint = $_POST['endpoint']; + $gatewayToken = $_POST['token']; + + try { + $gatewayPagamento = new GatewayPagamento($gatewayNome, $gatewayEndepoint, $gatewayToken); + $gatewayPagamento->setId($gatewayId); + $gatewayPagamento->editar(); + header("Location: ../view/gateway_pagamento.php?msg=editar-sucesso#mensagem-tabela"); + } catch (Exception $e) { + header("Location: ../view/gateway_pagamento.php?msg=editar-falha#mensagem-tabela"); + } + //echo 'Editando gateway de id: '.$gatewayId; + } + + /** + * Realiza os procedimentos necessários para ativar/desativar um gateway de pagamento no sistema + */ + public function alterarStatus() + { + $gatewayId = $_POST['id']; + $status = trim($_POST['status']); + + if (!$gatewayId || empty($gatewayId)) { + http_response_code(400); + echo json_encode(['Erro' => 'O id deve ser maior ou igual a 1.']);exit; + } + + if (!$status || empty($status)) { + http_response_code(400); + echo json_encode(['Erro' => 'O status informado não é válido.']);exit; + } + + if ($status === 'true') { + $status = 1; + } elseif ($status === 'false') { + $status = 0; + } + + try { + $gatewayPagamentoDao = new GatewayPagamentoDAO(); + $gatewayPagamentoDao->alterarStatusPorId($status, $gatewayId); + echo json_encode(['Sucesso']); + } catch (Exception $e) { + http_response_code(500); + echo json_encode(['Erro'=>'Ocorreu um problema no servidor.']);exit; + } + } +} diff --git a/html/apoio/controller/TesteController.php b/html/apoio/controller/TesteController.php new file mode 100644 index 00000000..f110fc3e --- /dev/null +++ b/html/apoio/controller/TesteController.php @@ -0,0 +1,8 @@ +$function(); //Calls the controller function +} catch (InvalidArgumentException $e) { + http_response_code(400); + exit("Erro: {$e->getMessage()}"); +} \ No newline at end of file diff --git a/html/apoio/dao/ConexaoDAO.php b/html/apoio/dao/ConexaoDAO.php new file mode 100644 index 00000000..baff84f4 --- /dev/null +++ b/html/apoio/dao/ConexaoDAO.php @@ -0,0 +1,9 @@ +setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + return $pdo; + } +} \ No newline at end of file diff --git a/html/apoio/dao/GatewayPagamentoDAO.php b/html/apoio/dao/GatewayPagamentoDAO.php new file mode 100644 index 00000000..c4736b14 --- /dev/null +++ b/html/apoio/dao/GatewayPagamentoDAO.php @@ -0,0 +1,108 @@ +pdo = ConexaoDAO::conectar(); + } + + /** + * Inseri um gateway de pagamento no banco de dados da aplicação + */ + public function cadastrar($nome, $endpoint, $token, $status){ + /*Lógica da aplicação */ + //definir consulta SQL + $sqlCadastrar = "INSERT INTO contribuicao_gatewayPagamento (plataforma, endpoint, token, status) + VALUES (:plataforma, :endpoint, :token, :status)"; + //utilizar prepared statements + $stmt = $this->pdo->prepare($sqlCadastrar); + $stmt->bindParam(':plataforma', $nome); + $stmt->bindParam(':endpoint', $endpoint); + $stmt->bindParam(':token', $token); + $stmt->bindParam(':status', $status); + //executar + $stmt->execute(); + } + + /** + * Busca os gateways de pagamento registrados no banco de dados da aplicação + */ + public function buscaTodos(){ + //definir consulta sql + $sqlBuscaTodos = "SELECT * from contribuicao_gatewayPagamento"; + //executar + $resultado = $this->pdo->query($sqlBuscaTodos)->fetchAll(PDO::FETCH_ASSOC); + //retornar resultado + return $resultado; + } + + /** + * Remover o gateway de pagamento que possuí id equivalente no banco de dados da aplicação + */ + public function excluirPorId($id){ + //definir consulta sql + $sqlExcluirPorId = "DELETE FROM contribuicao_gatewayPagamento WHERE id=:id"; + //utilizar prepared statements + $stmt = $this->pdo->prepare($sqlExcluirPorId); + $stmt->bindParam(':id', $id); + //executar + $stmt->execute(); + + //verificar se algum elemento foi de fato excluído + $gatewayExcluido = $stmt->rowCount(); + + if($gatewayExcluido < 1){ + throw new Exception(); + } + } + + /** + * Modifica os campos da tabela contribuicao_gatewaypagamento relacionados ao id informado + */ + public function editarPorId($id, $nome, $endpoint, $token){ + //definir consulta sql + $sqlEditarPorId = "UPDATE contribuicao_gatewayPagamento SET plataforma =:nome, endpoint =:endpoint, token =:token WHERE id=:id"; + //utilizar prepared statements + $stmt = $this->pdo->prepare($sqlEditarPorId); + $stmt->bindParam(':nome', $nome); + $stmt->bindParam(':endpoint', $endpoint); + $stmt->bindParam(':token', $token); + $stmt->bindParam(':id', $id); + //executar + $stmt->execute(); + + //verificar se algum elemento foi de fato alterado + $gatewayExcluido = $stmt->rowCount(); + + if($gatewayExcluido < 1){ + throw new Exception(); + } + } + + /** + * Modifica o campo status da tabela contribuica_gatewayPagamento de acordo com o id fornecido + */ + public function alterarStatusPorId($status, $gatewayId){ + //definir consulta sql + $sqlAlterarStatusPorId = "UPDATE contribuicao_gatewayPagamento SET status =:status WHERE id=:gatewayId"; + //utilizar prepared statements + $stmt = $this->pdo->prepare($sqlAlterarStatusPorId); + $stmt->bindParam(':status', $status); + $stmt->bindParam(':gatewayId', $gatewayId); + //executar + $stmt->execute(); + + //verificar se algum elemento foi de fato alterado + $gatewayAlterado = $stmt->rowCount(); + + if($gatewayAlterado < 1){ + throw new Exception(); + } + } +} \ No newline at end of file diff --git a/html/apoio/model/GatewayPagamento.php b/html/apoio/model/GatewayPagamento.php new file mode 100644 index 00000000..1b7a4061 --- /dev/null +++ b/html/apoio/model/GatewayPagamento.php @@ -0,0 +1,168 @@ +setNome($nome)->setEndpoint($endpoint)->setToken($token); + if(!$status){ + $this->setStatus(0); + }else{ + $this->setStatus($status); + } + } + + /** + * Pega os atributos nome, endpoint, token e status e realiza os procedimentos necessários + * para inserir um Gateway de pagamento no sistema + */ + public function cadastrar(){ + require_once '../dao/GatewayPagamentoDAO.php'; + $gatewayPagamentoDao = new GatewayPagamentoDAO(); + $gatewayPagamentoDao->cadastrar($this->nome, $this->endpoint, $this->token, $this->status); + } + + /** + * Altera os dados do sistema pelos novos fornecidos através dos atributos $nome e $endpoint e $token + */ + public function editar(){ + require_once '../dao/GatewayPagamentoDAO.php'; + $gatewayPagamentoDao = new GatewayPagamentoDAO(); + $gatewayPagamentoDao->editarPorId($this->id, $this->nome, $this->endpoint, $this->token); + } + + /** + * Get the value of status + */ + public function getStatus() + { + return $this->status; + } + + /** + * Set the value of status + * + * @return self + */ + public function setStatus($status) + { + $statusLimpo = trim($status); + //echo $statusLimpo; + + if((!$statusLimpo || empty($statusLimpo)) && $statusLimpo != 0){ + throw new InvalidArgumentException('O status de um gateway de pagamento não pode ser vazio.'); + } + + $this->status = $status; + + return $this; + } + + /** + * Get the value of token + */ + public function getToken() + { + return $this->token; + } + + /** + * Set the value of token + * + * @return self + */ + public function setToken($token) + { + $tokenLimpo = trim($token); + + if(!$tokenLimpo || empty($tokenLimpo)){ + throw new InvalidArgumentException('O token de um gateway de pagamento não pode ser vazio.'); + } + + $this->token = $token; + + return $this; + } + + /** + * Get the value of endpoint + */ + public function getEndpoint() + { + return $this->endpoint; + } + + /** + * Set the value of endpoint + * + * @return self + */ + public function setEndpoint($endpoint) + { + $endpointLimpo = trim($endpoint); + + if(!$endpointLimpo || empty($endpointLimpo)){ + throw new InvalidArgumentException('O endpoint de um gateway de pagamento não pode ser vazio.'); + } + + $this->endpoint = $endpoint; + + return $this; + } + + /** + * Get the value of nome + */ + public function getNome() + { + return $this->nome; + } + + /** + * Set the value of nome + * + * @return self + */ + public function setNome($nome) + { + $nomeLimpo = trim($nome); + + if(!$nomeLimpo || empty($nomeLimpo)){ + throw new InvalidArgumentException('O nome de um gateway de pagamento não pode ser vazio.'); + } + $this->nome = $nome; + + return $this; + } + + /** + * Get the value of id + */ + public function getId() + { + return $this->id; + } + + /** + * Set the value of id + * + * @return self + */ + public function setId($id) + { + $idLimpo = trim($id); + + if(!$idLimpo || $idLimpo <1){ + throw new InvalidArgumentException(); + } + $this->id = $id; + + return $this; + } +} \ No newline at end of file diff --git a/html/apoio/public/css/contribuicao-configuracao.css b/html/apoio/public/css/contribuicao-configuracao.css new file mode 100644 index 00000000..b48dfbd5 --- /dev/null +++ b/html/apoio/public/css/contribuicao-configuracao.css @@ -0,0 +1,82 @@ + /* Container do toggle */ + .toggle-switch { + position: relative; + display: inline-block; + width: 60px; + /*height: 34px; + padding-bottom: 0px;*/ +} + +/* Esconde o input checkbox */ +.toggle-input { + opacity: 0; + width: 0; + height: 0; +} + +/* Estilo do label que age como o toggle */ +.toggle-label { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + height: 20px; + background-color: #ccc; + transition: .4s; + border-radius: 34px; +} + +/* Estilo do círculo deslizante */ +.toggle-label:before { + position: absolute; + content: ""; + height: 20px; + width: 20px; + left: 2px; + /*bottom: 4px;*/ + background-color: white; + transition: .4s; + border-radius: 50%; +} + +/* Estilo quando o checkbox está marcado */ +.toggle-input:checked+.toggle-label { + background-color: #2196F3; +} + +.toggle-input:checked+.toggle-label:before { + transform: translateX(36px); +} + +/*Centralizar verticalmente */ +.vertical-center{ + vertical-align: middle!important; +} + +/*Estilos do modal de edição*/ +.modal-header-primary { + background-color: #0088cc; /* Azul do panel-primary */ + color: white; + border-bottom: 1px solid #2e6da4; /* Borda inferior azul escuro */ +} + +.modal-header-primary .modal-title { + font-size: 18px; + margin: 0; + padding: 10px 0; +} + +.modal-header-primary .close { + color: #d2322d ; /* Define a cor vermelha */ + opacity: 1; /* Torna o ícone completamente opaco */ + text-shadow: 0 1px black; +} + +.modal-header-primary .close:hover, +.modal-header-primary .close:focus { + color: rgb(231, 15, 15); /* Altera a cor para vermelho escuro ao passar o mouse ou focar */ + text-shadow: 0 1px red; +} + diff --git a/html/apoio/public/js/configuracoesGerais.js b/html/apoio/public/js/configuracoesGerais.js new file mode 100644 index 00000000..e6433fb9 --- /dev/null +++ b/html/apoio/public/js/configuracoesGerais.js @@ -0,0 +1,53 @@ +$(function () {//Carrega cabeçalho e menu lateral + $("#header").load("../../header.php"); + $(".menuu").load("../../menu.php"); +}); + +/** + * Trava de segurança para evitar exclusão de itens indesejados + * @returns + */ +function confirmarExclusao() { + return confirm("Tem certeza que deseja excluir este item?"); +} + +/**Extraí os dados necessários da view e envia um fetch de POST para a URL informada */ +function alterarStatus(ev, URL, controller) { + const toggleId = ev.target.id; // ID do toggle clicado + const isChecked = ev.target.checked; // Verifica se está marcado ou não + + // Usando expressão regular para extrair o número + const idNumber = toggleId.match(/\d+/)[0]; // Extrai o número após 'toggle' + // Montar os dados para enviar no POST + + data = new URLSearchParams(); + data.append('id', idNumber); + data.append('status', isChecked); + data.append('nomeClasse', controller); + data.append('metodo', 'alterarStatus'); + + // Enviar dados via fetch (POST) + fetch(URL, { + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + body: data.toString() // Converte o objeto em uma string URL-encoded + }) + .then(response => { + if (response.ok) { + return response.json(); // Se necessário, processa a resposta + } else { + return response.json().then(errData => { + // Lança o erro com a mensagem extraída do backend + throw new Error(errData.Erro || 'Erro desconhecido no servidor'); + }); + } + }) + .then(result => { + console.log('Resultado:', result); // Processa a resposta do servidor, se houver + }) + .catch(error => { + alert(error); + }); +} \ No newline at end of file diff --git a/html/apoio/public/js/gatewayPagamento.js b/html/apoio/public/js/gatewayPagamento.js new file mode 100644 index 00000000..70e7eece --- /dev/null +++ b/html/apoio/public/js/gatewayPagamento.js @@ -0,0 +1,32 @@ +document.addEventListener('DOMContentLoaded', function () { + // Seletor para todos os botões de editar + const editButtons = document.querySelectorAll('button[title="Editar"]'); + + editButtons.forEach(button => { + button.addEventListener('click', function () { + const id = this.getAttribute('data-id'); + const nome = this.closest('tr').querySelector('td:nth-child(1)').textContent; + const endpoint = this.closest('tr').querySelector('td:nth-child(2)').textContent; + const token = this.closest('tr').querySelector('td:nth-child(3)').textContent; + + // Preenche o modal com os dados do gateway + document.getElementById('editId').value = id; + document.getElementById('editNome').value = nome; + document.getElementById('editEndpoint').value = endpoint; + document.getElementById('editToken').value = token; + + // Exibe o modal + $('#editModal').modal('show'); + }); + }); + + //Checkbox de ativar/desativar um gateway de pagamento + const toggles = document.querySelectorAll('.toggle-input'); + + toggles.forEach(toggle => { + toggle.addEventListener('change', function (ev) { + alterarStatus(ev, '../controller/control.php', 'GatewayPagamentoController'); + }); + }); + +}); \ No newline at end of file diff --git a/html/apoio/view/gateway_pagamento.php b/html/apoio/view/gateway_pagamento.php new file mode 100644 index 00000000..dda92333 --- /dev/null +++ b/html/apoio/view/gateway_pagamento.php @@ -0,0 +1,281 @@ +buscaTodos(); + +?> + + + + + + + Gateway de Pagamento + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+
+
+
+

Cadastro de um novo Gateway

+
+ +
+
+
+
+ + + + + +
+ +
+ +
+
+ Os campos com * devem ser preenchidos antes de prosseguir. +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+

Gateways do Sistema

+
+ +
+
+
+
+ + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
PlataformaEndpointToken APIAtivoAção
+
+ + + + + + +
+
+ +
+ + + + +
+
+ + + + + +
+
+
+
+ +
+
+
+ + +
+ +
+ + + \ No newline at end of file diff --git a/html/apoio/view/teste.php b/html/apoio/view/teste.php new file mode 100644 index 00000000..cb37c09c --- /dev/null +++ b/html/apoio/view/teste.php @@ -0,0 +1,16 @@ + + + + + + Document + + +

Teste

+
+ + + +
+ + \ No newline at end of file From 7e23a8021a3bda1b6c0182e52fa8e1330ff45694 Mon Sep 17 00:00:00 2001 From: GabrielPintoSouza Date: Tue, 24 Sep 2024 09:41:33 -0300 Subject: [PATCH 02/11] =?UTF-8?q?Transfer=C3=AAncia=20da=20p=C3=A1gina=20m?= =?UTF-8?q?eio=5Fpagamento.php=20para=20a=20nova=20estrutura=20de=20diret?= =?UTF-8?q?=C3=B3rios=20do=20m=C3=B3dulo=20de=20contribui=C3=A7=C3=A3o=20[?= =?UTF-8?q?Issue=20#727]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MeioPagamentoController.php | 105 +++++++ html/apoio/controller/TesteController.php | 8 - html/apoio/dao/MeioPagamentoDAO.php | 114 +++++++ html/apoio/model/MeioPagamento.php | 138 +++++++++ html/apoio/public/js/meioPagamento.js | 37 +++ html/apoio/view/meio_pagamento.php | 288 ++++++++++++++++++ html/apoio/view/teste.php | 16 - 7 files changed, 682 insertions(+), 24 deletions(-) create mode 100644 html/apoio/controller/MeioPagamentoController.php delete mode 100644 html/apoio/controller/TesteController.php create mode 100644 html/apoio/dao/MeioPagamentoDAO.php create mode 100644 html/apoio/model/MeioPagamento.php create mode 100644 html/apoio/public/js/meioPagamento.js create mode 100644 html/apoio/view/meio_pagamento.php delete mode 100644 html/apoio/view/teste.php diff --git a/html/apoio/controller/MeioPagamentoController.php b/html/apoio/controller/MeioPagamentoController.php new file mode 100644 index 00000000..5972a715 --- /dev/null +++ b/html/apoio/controller/MeioPagamentoController.php @@ -0,0 +1,105 @@ +cadastrar(); + header("Location: ../view/meio_pagamento.php?msg=cadastrar-sucesso"); + }catch(Exception $e){ + header("Location: ../view/meio_pagamento.php?msg=cadastrar-falha"); + } + } + + /** + * Busca os meios de pagamentos registrados no banco de dados da aplicação + */ + public function buscaTodos(){ + try{ + $meioPagamentoDao = new MeioPagamentoDAO(); + $meiosPagamento = $meioPagamentoDao->buscaTodos(); + return $meiosPagamento; + }catch(PDOException $e){ + echo 'Erro na busca de meios de pagamento: '.$e->getMessage(); + } + } + + /** + * Realiza os procedimentos necessários para remover um meio de pagamento do sistema. + */ + public function excluirPorId(){ + $meioPagamentoId = trim($_POST['meio-pagamento-id']); + + if (!$meioPagamentoId || empty($meioPagamentoId) || $meioPagamentoId < 1) { + //parar operação + header("Location: ../view/meio_pagamento.php?msg=excluir-falha#mensagem-tabela"); + exit(); + } + + try{ + $meioPagamentoDao = new MeioPagamentoDAO(); + $meioPagamentoDao->excluirPorId($meioPagamentoId); + header("Location: ../view/meio_pagamento.php?msg=excluir-sucesso#mensagem-tabela"); + }catch(Exception $e){ + header("Location: ../view/meio_pagamento.php?msg=excluir-falha#mensagem-tabela"); + } + } + + /** + * Realiza os procedimentos necessários para alterar as informações de um meio de pagamento do sistema + */ + public function editarPorId(){ + $descricao = $_POST['nome']; + $gatewayId = $_POST['plataforma']; + $meioPagamentoId = $_POST['id']; + + try{ + $meioPagamento = new MeioPagamento($descricao, $gatewayId); + $meioPagamento->setId($meioPagamentoId); + $meioPagamento->editar(); + header("Location: ../view/meio_pagamento.php?msg=editar-sucesso#mensagem-tabela"); + }catch(Exception $e){ + header("Location: ../view/meio_pagamento.php?msg=editar-falha#mensagem-tabela"); + } + } + + /** + * Realiza os procedimentos necessários para ativar/desativar um meio de pagamento no sistema + */ + public function alterarStatus() + { + $meioPagamentoId = $_POST['id']; + $status = trim($_POST['status']); + + if (!$meioPagamentoId || empty($meioPagamentoId)) { + http_response_code(400); + echo json_encode(['Erro' => 'O id deve ser maior ou igual a 1.']);exit; + } + + if (!$status || empty($status)) { + http_response_code(400); + echo json_encode(['Erro' => 'O status informado não é válido.']);exit; + } + + if ($status === 'true') { + $status = 1; + } elseif ($status === 'false') { + $status = 0; + } + + try { + $meioPagamentoDao = new MeioPagamentoDAO(); + $meioPagamentoDao->alterarStatusPorId($status, $meioPagamentoId); + echo json_encode(['Sucesso']); + } catch (Exception $e) { + http_response_code(500); + echo json_encode(['Erro'=>'Ocorreu um problema no servidor.']);exit; + } + } +} \ No newline at end of file diff --git a/html/apoio/controller/TesteController.php b/html/apoio/controller/TesteController.php deleted file mode 100644 index f110fc3e..00000000 --- a/html/apoio/controller/TesteController.php +++ /dev/null @@ -1,8 +0,0 @@ -pdo = ConexaoDAO::conectar(); + } + + /** + * Inseri um meio de pagamento no banco de dados da aplicação + */ + public function cadastrar($descricao, $gatewayId, $status) + { + /*Lógica da aplicação */ + //definir consulta SQL + $sqlCadastrar = "INSERT INTO contribuicao_meioPagamento (meio, id_plataforma, status) + VALUES (:descricao, :gatewayId, :status)"; + //utilizar prepared statements + $stmt = $this->pdo->prepare($sqlCadastrar); + $stmt->bindParam(':descricao', $descricao); + $stmt->bindParam(':gatewayId', $gatewayId); + $stmt->bindParam(':status', $status); + //executar + $stmt->execute(); + } + + /** + * Retorna todos os meios de pagamentos registrados no banco de dados da aplicação + */ + public function buscaTodos() + { + //definir consulta sql + $sqlBuscaTodos = "SELECT cmp.id, cmp.meio, cmp.id_plataforma, cmp.status, cgp.plataforma, cgp.endpoint + FROM contribuicao_meioPagamento cmp + JOIN contribuicao_gatewayPagamento cgp ON (cgp.id=cmp.id_plataforma)"; + //executar + $resultado = $this->pdo->query($sqlBuscaTodos)->fetchAll(PDO::FETCH_ASSOC); + //retornar resultado + return $resultado; + } + + /** + * Remover o meio de pagamento que possuí id equivalente no banco de dados da aplicação + */ + public function excluirPorId($id) + { + //definir consulta sql + $sqlExcluirPorId = "DELETE FROM contribuicao_meioPagamento WHERE id=:id"; + //utilizar prepared statements + $stmt = $this->pdo->prepare($sqlExcluirPorId); + $stmt->bindParam(':id', $id); + //executar + $stmt->execute(); + + //verificar se algum elemento foi de fato excluído + $meioPagamentoExcluido = $stmt->rowCount(); + + if ($meioPagamentoExcluido < 1) { + throw new Exception(); + } + } + + /** + * Edita o meio de pagamento que possuí id equivalente no banco de dados da aplicação + */ + public function editarPorId($id, $descricao, $gatewayId) + { + //definir consulta sql + $sqlEditarPorId = "UPDATE contribuicao_meioPagamento SET meio =:descricao, id_plataforma =:gatewayId WHERE id=:id"; + //utilizar prepared statements + $stmt = $this->pdo->prepare($sqlEditarPorId); + $stmt->bindParam(':descricao', $descricao); + $stmt->bindParam(':gatewayId', $gatewayId); + $stmt->bindParam(':id', $id); + //executar + $stmt->execute(); + + //verificar se algum elemento foi de fato alterado + $meioPagamentoExcluido = $stmt->rowCount(); + + if ($meioPagamentoExcluido < 1) { + throw new Exception(); + } + } + + /** + * Modifica o campo status da tabela contribuica_meioPagamento de acordo com o id fornecido + */ + public function alterarStatusPorId($status, $meioPagamentoId) + { + //definir consulta sql + $sqlAlterarStatusPorId = "UPDATE contribuicao_meioPagamento SET status =:status WHERE id=:meioPagamentoId"; + //utilizar prepared statements + $stmt = $this->pdo->prepare($sqlAlterarStatusPorId); + $stmt->bindParam(':status', $status); + $stmt->bindParam(':meioPagamentoId', $meioPagamentoId); + //executar + $stmt->execute(); + + //verificar se algum elemento foi de fato alterado + $meioAlterado = $stmt->rowCount(); + + if ($meioAlterado < 1) { + throw new Exception(); + } + } +} diff --git a/html/apoio/model/MeioPagamento.php b/html/apoio/model/MeioPagamento.php new file mode 100644 index 00000000..c46aacca --- /dev/null +++ b/html/apoio/model/MeioPagamento.php @@ -0,0 +1,138 @@ +setDescricao($descricao)->setGatewayId($gatewayId); + + if(!$status){ + $this->setStatus(0); + }else{ + $this->setStatus($status); + } + } + + /** + * Pega os atributos $descricao e $gatewayId e realiza os procedimentos necessários para + * inserir um novo meio de pagamento no sistema da aplicação. + */ + public function cadastrar(){ + require_once '../dao/MeioPagamentoDAO.php'; + $meioPagamentoDao = new MeioPagamentoDAO(); + $meioPagamentoDao->cadastrar($this->descricao, $this->gatewayId, $this->status); + } + + /** + * Altera os dados do sistema pelos novos fornecidos através dos atributos $descricao e $gatewayId + */ + public function editar(){ + require_once '../dao/MeioPagamentoDAO.php'; + $meioPagamentoDao = new MeioPagamentoDAO(); + $meioPagamentoDao->editarPorId($this->id, $this->descricao, $this->gatewayId); + } + + /** + * Get the value of descricao + */ + public function getDescricao() + { + return $this->descricao; + } + + /** + * Set the value of descricao + * + * @return self + */ + public function setDescricao($descricao) + { + $descricaoLimpa = trim($descricao); + if(!$descricaoLimpa || empty($descricaoLimpa)){ + throw new InvalidArgumentException(); + } + + $this->descricao = $descricao; + + return $this; + } + + /** + * Get the value of gatewayId + */ + public function getGatewayId() + { + return $this->gatewayId; + } + + /** + * Set the value of gatewayId + * + * @return self + */ + public function setGatewayId($gatewayId) + { + if(!$gatewayId || $gatewayId < 1){ + throw new InvalidArgumentException(); + } + + $this->gatewayId = $gatewayId; + + return $this; + } + + /** + * Get the value of id + */ + public function getId() + { + return $this->id; + } + + /** + * Set the value of id + * + * @return self + */ + public function setId($id) + { + $idLimpo = trim($id); + + if(!$idLimpo || $idLimpo <1){ + throw new InvalidArgumentException(); + } + $this->id = $id; + + return $this; + } + + /** + * Get the value of status + */ + public function getStatus() + { + return $this->status; + } + + /** + * Set the value of status + * + * @return self + */ + public function setStatus($status) + { + $statusLimpo = trim($status); + //echo $statusLimpo; + + if((!$statusLimpo || empty($statusLimpo)) && $statusLimpo != 0){ + throw new InvalidArgumentException('O status de um meio de pagamento não pode ser vazio.'); + } + + $this->status = $status; + + return $this; + } +} \ No newline at end of file diff --git a/html/apoio/public/js/meioPagamento.js b/html/apoio/public/js/meioPagamento.js new file mode 100644 index 00000000..6d90272e --- /dev/null +++ b/html/apoio/public/js/meioPagamento.js @@ -0,0 +1,37 @@ +document.addEventListener('DOMContentLoaded', function () { + // Seletor para todos os botões de editar + const editButtons = document.querySelectorAll('button[title="Editar"]'); + + editButtons.forEach(button => { + button.addEventListener('click', function () { + const id = this.getAttribute('data-id'); + const nome = this.closest('tr').querySelector('td:nth-child(1)').textContent; + const plataformaId = this.getAttribute('data-plataforma-id'); + + // Preenche o modal com os dados do gateway + document.getElementById('editId').value = id; + document.getElementById('editNome').value = nome; + let plataformas = document.getElementById('editPlataforma'); + plataformas.value = plataformaId; + const options = plataformas.options; + + // Verifica se a opção foi selecionada corretamente + if (plataformas.value !== plataformaId) { + console.error('Erro ao selecionar a plataforma com ID:', plataformaId); + } else { + console.log('Plataforma selecionada:', plataformas.options[plataformas.selectedIndex].textContent); + } + + $('#editModal').modal('show'); + }); + }); + + //Checkbox de ativar/desativar um meio de pagamento + const toggles = document.querySelectorAll('.toggle-input'); + + toggles.forEach(toggle => { + toggle.addEventListener('change', function (ev) { + alterarStatus(ev, '../controller/control.php', 'MeioPagamentoController'); + }); + }); +}); \ No newline at end of file diff --git a/html/apoio/view/meio_pagamento.php b/html/apoio/view/meio_pagamento.php new file mode 100644 index 00000000..7f2d7fc5 --- /dev/null +++ b/html/apoio/view/meio_pagamento.php @@ -0,0 +1,288 @@ +buscaTodos(); + +//carrega meios de pagamentos salvos no banco de dados da aplicação +require_once('../controller/MeioPagamentoController.php'); + +$meioPagamentoController = new MeioPagamentoController(); +$meiosPagamento = $meioPagamentoController->buscaTodos(); +?> + + + + + + + Meio de Pagamento + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ + +
+
+
+
+

Cadastro de um novo Meio de Pagamento

+
+ +
+
+
+
+ + + + + +
+ +
+ +
+
+ Os campos com * devem ser preenchidos antes de prosseguir. +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+

Meios de pagamento do sistema

+
+ +
+
+
+
+ + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + +
DescriçãoPlataforma | EndpointAtivoAção
+
+ + + + + + +
+
+ +
+ + + + +
+
+ + + + + +
+
+
+
+
+
+
+ + + +
+ +
+ + + \ No newline at end of file diff --git a/html/apoio/view/teste.php b/html/apoio/view/teste.php deleted file mode 100644 index cb37c09c..00000000 --- a/html/apoio/view/teste.php +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Document - - -

Teste

-
- - - -
- - \ No newline at end of file From 45e19848f0e0e81872554cf2ce163f5b1d056331 Mon Sep 17 00:00:00 2001 From: GabrielPintoSouza Date: Tue, 24 Sep 2024 10:36:10 -0300 Subject: [PATCH 03/11] =?UTF-8?q?Transfer=C3=AAncia=20da=20p=C3=A1gina=20r?= =?UTF-8?q?egra=5Fpagamento.php=20para=20a=20nova=20estrutura=20de=20diret?= =?UTF-8?q?=C3=B3rios=20do=20m=C3=B3dulo=20de=20contribui=C3=A7=C3=A3o=20[?= =?UTF-8?q?Issue=20#727]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/RegraPagamentoController.php | 121 +++++++ html/apoio/dao/RegraPagamentoDAO.php | 117 +++++++ html/apoio/model/RegraPagamento.php | 154 +++++++++ html/apoio/public/js/regraPagamento.js | 26 ++ html/apoio/view/regra_pagamento.php | 301 ++++++++++++++++++ 5 files changed, 719 insertions(+) create mode 100644 html/apoio/controller/RegraPagamentoController.php create mode 100644 html/apoio/dao/RegraPagamentoDAO.php create mode 100644 html/apoio/model/RegraPagamento.php create mode 100644 html/apoio/public/js/regraPagamento.js create mode 100644 html/apoio/view/regra_pagamento.php diff --git a/html/apoio/controller/RegraPagamentoController.php b/html/apoio/controller/RegraPagamentoController.php new file mode 100644 index 00000000..b033583a --- /dev/null +++ b/html/apoio/controller/RegraPagamentoController.php @@ -0,0 +1,121 @@ +buscaRegrasContribuicao(); + return $regrasContribuicao; + } + + /** + * Retorna o conjunto de regras de pagamento presentes no sistema + */ + public function buscaConjuntoRegrasPagamento(){ + $regraPagamentoDao = new RegraPagamentoDAO(); + $conjuntoRegrasPagamento = $regraPagamentoDao->buscaConjuntoRegrasPagamento(); + return $conjuntoRegrasPagamento; + } + + /** + * Extraí os dados do formulário e realiza os procedimentos necessários para inserir um novo + * conjunto de regras no sistema. + */ + public function cadastrar(){ + //Implementar restante da lógica do código... + $meioPagamentoId = $_POST['meio-pagamento-plataforma']; + $regraContribuicaoId = $_POST['regra-pagamento']; + $valor = $_POST['valor']; + try{ + $regraPagamento = new RegraPagamento(); + $regraPagamento + ->setMeioPagamentoId($meioPagamentoId) + ->setRegraContribuicaoId($regraContribuicaoId) + ->setValor($valor) + ->setStatus(0) + ->cadastrar(); + header("Location: ../view/regra_pagamento.php?msg=cadastrar-sucesso"); + }catch(Exception $e){ + header("Location: ../view/regra_pagamento.php?msg=cadastrar-falha"); + } + } + + /** + * Realiza os procedimentos necessários para remover uma regra de pagamento do sistema. + */ + public function excluirPorId(){ + $regraPagamentoId = trim($_POST['regra-pagamento-id']); + + if (!$regraPagamentoId || empty($regraPagamentoId) || $regraPagamentoId < 1) { + //parar operação + header("Location: ../view/regra_pagamento.php?msg=excluir-falha#mensagem-tabela"); + exit(); + } + + try{ + $regraPagamentoDao = new RegraPagamentoDAO(); + $regraPagamentoDao->excluirPorId($regraPagamentoId); + header("Location: ../view/regra_pagamento.php?msg=excluir-sucesso#mensagem-tabela"); + }catch(Exception $e){ + header("Location: ../view/regra_pagamento.php?msg=excluir-falha#mensagem-tabela"); + } + } + + /** + * Realiza os procedimentos necessários para alterar as informações de uma regra de pagamento do sistema + */ + public function editarPorId(){ + $valor = $_POST['valor']; + $regraPagamentoId = $_POST['id']; + + try{ + $regraPagamento = new RegraPagamento(); + $regraPagamento + ->setId($regraPagamentoId) + ->setValor($valor) + ->editar(); + header("Location: ../view/regra_pagamento.php?msg=editar-sucesso#mensagem-tabela"); + }catch(Exception $e){ + header("Location: ../view/regra_pagamento.php?msg=editar-falha#mensagem-tabela"); + } + } + + /** + * Realiza os procedimentos necessários para ativar/desativar uma regra de pagamento no sistema + */ + public function alterarStatus() + { + $regraPagamentoId = $_POST['id']; + $status = trim($_POST['status']); + + if (!$regraPagamentoId || empty($regraPagamentoId)) { + http_response_code(400); + echo json_encode(['Erro' => 'O id deve ser maior ou igual a 1.']);exit; + } + + if (!$status || empty($status)) { + http_response_code(400); + echo json_encode(['Erro' => 'O status informado não é válido.']);exit; + } + + if ($status === 'true') { + $status = 1; + } elseif ($status === 'false') { + $status = 0; + } + + try { + $regraPagamentoDao = new RegraPagamentoDAO(); + $regraPagamentoDao->alterarStatusPorId($status, $regraPagamentoId, $status); + echo json_encode(['Sucesso']); + } catch (Exception $e) { + http_response_code(500); + echo json_encode(['Erro'=>'Ocorreu um problema no servidor.']);exit; + } + } +} \ No newline at end of file diff --git a/html/apoio/dao/RegraPagamentoDAO.php b/html/apoio/dao/RegraPagamentoDAO.php new file mode 100644 index 00000000..754a1055 --- /dev/null +++ b/html/apoio/dao/RegraPagamentoDAO.php @@ -0,0 +1,117 @@ +pdo = ConexaoDAO::conectar(); + } + + /** + * Retorna todas as regras de contribuição presentes no banco de dados da aplicação + */ + public function buscaRegrasContribuicao(){ + //definir consulta sql + $sqlBuscaTodos = "SELECT * FROM contribuicao_regras"; + //executar + $resultado = $this->pdo->query($sqlBuscaTodos)->fetchAll(PDO::FETCH_ASSOC); + //retornar resultado + return $resultado; + } + + public function buscaConjuntoRegrasPagamento(){ + //definir consulta sql + $sqlBuscaTodos = "SELECT ccr.id, ccr.id_meioPagamento, ccr.id_regra, ccr.valor, ccr.status, cmp.meio, cr.regra, cgp.plataforma, cgp.endpoint + FROM contribuicao_conjuntoRegras ccr + JOIN contribuicao_meioPagamento cmp ON(cmp.id=ccr.id_meioPagamento) + JOIN contribuicao_gatewayPagamento cgp ON(cgp.id = cmp.id_plataforma) + JOIN contribuicao_regras cr ON(cr.id=ccr.id_regra)"; + //executar + $resultado = $this->pdo->query($sqlBuscaTodos)->fetchAll(PDO::FETCH_ASSOC); + //retornar resultado + return $resultado; + } + + /** + * Inseri um novo conjunto de regras no banco de dados da aplicação + */ + public function cadastrar($meioPagamentoId, $regraContribuicaoId, $valor, $status){ + /*Lógica da aplicação */ + //definir consulta SQL + $sqlCadastrar = "INSERT INTO contribuicao_conjuntoRegras (id_meioPagamento, id_regra, valor, status) + VALUES (:meioPagamentoId, :regraContribuicaoId, :valor, :status)"; + //utilizar prepared statements + $stmt = $this->pdo->prepare($sqlCadastrar); + $stmt->bindParam(':meioPagamentoId', $meioPagamentoId); + $stmt->bindParam(':regraContribuicaoId', $regraContribuicaoId); + $stmt->bindParam(':valor', $valor); + $stmt->bindParam(':status', $status); + //executar + $stmt->execute(); + } + + + public function excluirPorId($id){ + //definir consulta sql + $sqlExcluirPorId = "DELETE FROM contribuicao_conjuntoRegras WHERE id=:id"; + //utilizar prepared statements + $stmt = $this->pdo->prepare($sqlExcluirPorId); + $stmt->bindParam(':id', $id); + //executar + $stmt->execute(); + + //verificar se algum elemento foi de fato excluído + $conjuntoRegraPagamentoExcluido = $stmt->rowCount(); + + if($conjuntoRegraPagamentoExcluido < 1){ + throw new Exception(); + } + } + + /** + * Edita o meio de pagamento que possuí id equivalente no + */ + public function editarPorId($id, $valor){ + //definir consulta sql + $sqlEditarPorId = "UPDATE contribuicao_conjuntoRegras SET valor =:valor WHERE id=:id"; + //utilizar prepared statements + $stmt = $this->pdo->prepare($sqlEditarPorId); + $stmt->bindParam(':valor', $valor); + $stmt->bindParam(':id', $id); + //executar + $stmt->execute(); + + //verificar se algum elemento foi de fato alterado + $meioPagamentoExcluido = $stmt->rowCount(); + + if($meioPagamentoExcluido < 1){ + throw new Exception(); + } + } + + /** + * Modifica o campo status da tabela contribuicao_conjuntoRegras de acordo com o id fornecido + */ + public function alterarStatusPorId($status, $regraPagamentoId) + { + //definir consulta sql + $sqlAlterarStatusPorId = "UPDATE contribuicao_conjuntoRegras SET status =:status WHERE id=:regraPagamentoId"; + //utilizar prepared statements + $stmt = $this->pdo->prepare($sqlAlterarStatusPorId); + $stmt->bindParam(':status', $status); + $stmt->bindParam(':regraPagamentoId', $regraPagamentoId); + //executar + $stmt->execute(); + + //verificar se algum elemento foi de fato alterado + $regraAlterada = $stmt->rowCount(); + + if ($regraAlterada < 1) { + throw new Exception(); + } + } +} \ No newline at end of file diff --git a/html/apoio/model/RegraPagamento.php b/html/apoio/model/RegraPagamento.php new file mode 100644 index 00000000..f17db759 --- /dev/null +++ b/html/apoio/model/RegraPagamento.php @@ -0,0 +1,154 @@ +cadastrar($this->meioPagamentoId, $this->regraContribuicaoId, $this->valor, $this->status); + } + + /** + * Altera o valor de uma regra de pagamento no sistema + */ + public function editar(){ + require_once '../dao/RegraPagamentoDAO.php'; + $meioPagamentoDao = new RegraPagamentoDAO(); + $meioPagamentoDao->editarPorId($this->id, $this->valor); + } + + + /** + * Get the value of valor + */ + public function getValor() + { + return $this->valor; + } + + /** + * Set the value of valor + * + * @return self + */ + public function setValor($valor) + { + $valor = floatval($valor); + + if(!$valor || $valor < 0){ + throw new InvalidArgumentException(); + } + $this->valor = $valor; + + return $this; + } + + /** + * Get the value of regraContribuicaoId + */ + public function getRegraContribuicaoId() + { + return $this->regraContribuicaoId; + } + + /** + * Set the value of regraContribuicaoId + * + * @return self + */ + public function setRegraContribuicaoId($regraContribuicaoId) + { + $regraContribuicaoIdLimpo = trim($regraContribuicaoId); + + if(!$regraContribuicaoIdLimpo || $regraContribuicaoIdLimpo <1){ + throw new InvalidArgumentException(); + } + $this->regraContribuicaoId = $regraContribuicaoIdLimpo; + + return $this; + } + + /** + * Get the value of meioPagamentoId + */ + public function getMeioPagamentoId() + { + return $this->meioPagamentoId; + } + + /** + * Set the value of meioPagamentoId + * + * @return self + */ + public function setMeioPagamentoId($meioPagamentoId) + { + $meioPagamentoIdLimpo = trim($meioPagamentoId); + + if(!$meioPagamentoIdLimpo || $meioPagamentoIdLimpo <1){ + throw new InvalidArgumentException(); + } + $this->meioPagamentoId = $meioPagamentoIdLimpo; + + return $this; + } + + /** + * Get the value of id + */ + public function getId() + { + return $this->id; + } + + /** + * Set the value of id + * + * @return self + */ + public function setId($id) + { + if(!$id || $id < 1){ + throw new InvalidArgumentException(); + } + + $this->id = $id; + + return $this; + } + + /** + * Get the value of status + */ + public function getStatus() + { + return $this->status; + } + + /** + * Set the value of status + * + * @return self + */ + public function setStatus($status) + { + $statusLimpo = trim($status); + + if((!$statusLimpo || empty($statusLimpo)) && $statusLimpo != 0){ + throw new InvalidArgumentException('O status de um meio de pagamento não pode ser vazio.'); + } + + $this->status = $status; + + return $this; + } +} diff --git a/html/apoio/public/js/regraPagamento.js b/html/apoio/public/js/regraPagamento.js new file mode 100644 index 00000000..8623ca39 --- /dev/null +++ b/html/apoio/public/js/regraPagamento.js @@ -0,0 +1,26 @@ +document.addEventListener('DOMContentLoaded', function () { + // Seletor para todos os botões de editar + const editButtons = document.querySelectorAll('button[title="Editar"]'); + + editButtons.forEach(button => { + button.addEventListener('click', function () { + const id = this.getAttribute('data-id'); + const valor = this.closest('tr').querySelector('td:nth-child(4)').textContent; + + // Preenche o modal com os dados do gateway + document.getElementById('editId').value = id; + document.getElementById('editValor').value = valor; + + $('#editModal').modal('show'); + }); + }); + + //Checkbox de ativar/desativar uma regra de pagamento + const toggles = document.querySelectorAll('.toggle-input'); + + toggles.forEach(toggle => { + toggle.addEventListener('change', function (ev) { + alterarStatus(ev, '../controller/control.php', 'RegraPagamentoController'); + }); + }); +}); \ No newline at end of file diff --git a/html/apoio/view/regra_pagamento.php b/html/apoio/view/regra_pagamento.php new file mode 100644 index 00000000..438a2dee --- /dev/null +++ b/html/apoio/view/regra_pagamento.php @@ -0,0 +1,301 @@ +buscaTodos(); + +//carrega regras de contribuição +require_once('../controller/RegraPagamentoController.php'); + +$regraPagamentoController = new RegraPagamentoController(); +$regrasContribuicao = $regraPagamentoController->buscaRegrasContribuicao(); + +//carrega conjunto de regras de pagamento +$conjuntoRegrasPagamento = $regraPagamentoController->buscaConjuntoRegrasPagamento(); + +?> + + + + + + + Regra de Pagamento + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ + + +
+
+
+
+

Cadastro de uma nova regra de pagamento

+
+ +
+
+
+
+ + + + + +
+ +
+ +
+
+ Os campos com * devem ser preenchidos antes de prosseguir. +
+
+ + + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+

Regras de pagamento do sistema

+
+ +
+
+
+
+ + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Meio de PagamentoPlataforma | EndpointRegraValorAtivoAção
+
+ + + + + + +
+
+ +
+ + + + +
+
+ + + + + +
+
+
+
+
+
+
+ + + +
+ +
+ + + \ No newline at end of file From 6fe5cf151b1a86209f19c4b333285dff39c4c4fd Mon Sep 17 00:00:00 2001 From: GabrielPintoSouza Date: Wed, 25 Sep 2024 09:32:52 -0300 Subject: [PATCH 04/11] =?UTF-8?q?Cria=C3=A7=C3=A3o=20da=20model=20Contribu?= =?UTF-8?q?icaoLog=20[Issue=20#728]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/apoio/model/ContribuicaoLog.php | 150 +++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 html/apoio/model/ContribuicaoLog.php diff --git a/html/apoio/model/ContribuicaoLog.php b/html/apoio/model/ContribuicaoLog.php new file mode 100644 index 00000000..be9c9d94 --- /dev/null +++ b/html/apoio/model/ContribuicaoLog.php @@ -0,0 +1,150 @@ +id; + } + + /** + * Set the value of id + * + * @return self + */ + public function setId($id) + { + $this->id = $id; + + return $this; + } + + /** + * Get the value of valor + */ + public function getValor() + { + return $this->valor; + } + + /** + * Set the value of valor + * + * @return self + */ + public function setValor($valor) + { + $this->valor = $valor; + + return $this; + } + + /** + * Get the value of codigo + */ + public function getCodigo() + { + return $this->codigo; + } + + /** + * Set the value of codigo + * + * @return self + */ + public function setCodigo($codigo) + { + $this->codigo = $codigo; + + return $this; + } + + /** + * Get the value of data_geracao + */ + public function getData_geracao() + { + return $this->data_geracao; + } + + /** + * Set the value of data_geracao + * + * @return self + */ + public function setData_geracao($data_geracao) + { + $this->data_geracao = $data_geracao; + + return $this; + } + + /** + * Get the value of data_vencimento + */ + public function getData_vencimento() + { + return $this->data_vencimento; + } + + /** + * Set the value of data_vencimento + * + * @return self + */ + public function setData_vencimento($data_vencimento) + { + $this->data_vencimento = $data_vencimento; + + return $this; + } + + /** + * Get the value of id_socio + */ + public function getId_socio() + { + return $this->id_socio; + } + + /** + * Set the value of id_socio + * + * @return self + */ + public function setId_socio($id_socio) + { + $this->id_socio = $id_socio; + + return $this; + } + + /** + * Get the value of statusPagamento + */ + public function getStatusPagamento() + { + return $this->statusPagamento; + } + + /** + * Set the value of statusPagamento + * + * @return self + */ + public function setStatusPagamento($statusPagamento) + { + $this->statusPagamento = $statusPagamento; + + return $this; + } +} \ No newline at end of file From 799efbc0206abf8b015ce2ca4fb8af8312f71df9 Mon Sep 17 00:00:00 2001 From: GabrielPintoSouza Date: Wed, 25 Sep 2024 09:56:58 -0300 Subject: [PATCH 05/11] =?UTF-8?q?Cria=C3=A7=C3=A3o=20da=20tabela=20contrib?= =?UTF-8?q?uicao=5Flog=20[Issue=20#728]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/apoio/readme.md | 4 ++++ html/apoio/tabelas.sql | 15 +++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 html/apoio/readme.md create mode 100644 html/apoio/tabelas.sql diff --git a/html/apoio/readme.md b/html/apoio/readme.md new file mode 100644 index 00000000..9846eb9f --- /dev/null +++ b/html/apoio/readme.md @@ -0,0 +1,4 @@ +*Nota* + +Os arquivos contidos dentro da pasta `html/apoio/` fazem referência a \_refatoração\_ do módulo de +`contribuicao` e portanto devem substituir o conteúdo interno da pasta de `html/contribuicao/` \ No newline at end of file diff --git a/html/apoio/tabelas.sql b/html/apoio/tabelas.sql new file mode 100644 index 00000000..0366179b --- /dev/null +++ b/html/apoio/tabelas.sql @@ -0,0 +1,15 @@ +-- Posteriormente adicionar as tabelas desse arquivo ao banco de dados central do sistema +CREATE TABLE IF NOT EXISTS `wegia`.`contribuicao_log` ( + `id` INT NULL DEFAULT NULL AUTO_INCREMENT, + `id_socio` INT(11) NOT NULL, + `codigo` VARCHAR(255) NOT NULL UNIQUE, + `valor` DECIMAL(10,2) NOT NULL, + `data_geracao` DATE NOT NULL, + `data_vencimento` DATE NOT NULL, + `status_pagamento` BOOLEAN NOT NULL, + PRIMARY KEY (`id`), + CONSTRAINT `FK_id_socios` + FOREIGN KEY (`id_socio`) + REFERENCES `wegia`.`socio` (`id_socio`) +) +ENGINE = InnoDB; \ No newline at end of file From 78f5bd9e0dd683c0450ec3e684506b2cc1d692a5 Mon Sep 17 00:00:00 2001 From: GabrielPintoSouza Date: Wed, 25 Sep 2024 11:14:54 -0300 Subject: [PATCH 06/11] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20da=20funcionali?= =?UTF-8?q?dade=20de=20inserir=20na=20tabela=20contribuicao=5Flog=20[Issue?= =?UTF-8?q?=20#728]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/apoio/dao/ContribuicaoLogDAO.php | 45 +++++++++++++++++++++++++++ html/apoio/model/ContribuicaoLog.php | 44 +++++++++++++------------- 2 files changed, 67 insertions(+), 22 deletions(-) create mode 100644 html/apoio/dao/ContribuicaoLogDAO.php diff --git a/html/apoio/dao/ContribuicaoLogDAO.php b/html/apoio/dao/ContribuicaoLogDAO.php new file mode 100644 index 00000000..b03a2c70 --- /dev/null +++ b/html/apoio/dao/ContribuicaoLogDAO.php @@ -0,0 +1,45 @@ +pdo = ConexaoDAO::conectar(); + } + + public function criar(ContribuicaoLog $contribuicaoLog){ + $sqlInserirContribuicaoLog = "INSERT INTO contribuicao_log ( + id_socio, + codigo, + valor, + data_geracao, + data_vencimento, + status_pagamento + ) + VALUES ( + :idSocio, + :codigo, + :valor, + :dataGeracao, + :dataVencimento, + :statusPagamento + ) + "; + + $stmt = $this->pdo->prepare($sqlInserirContribuicaoLog); + $stmt->bindParam(':idSocio', $contribuicaoLog->getIdSocio()); + $stmt->bindParam(':codigo', $contribuicaoLog->getCodigo()); + $stmt->bindParam(':valor', $contribuicaoLog->getValor()); + $stmt->bindParam(':dataGeracao', $contribuicaoLog->getDataGeracao()); + $stmt->bindParam(':dataVencimento', $contribuicaoLog->getDataVencimento()); + $stmt->bindParam(':statusPagamento', $contribuicaoLog->getStatusPagamento()); + + $stmt->execute(); + } +} \ No newline at end of file diff --git a/html/apoio/model/ContribuicaoLog.php b/html/apoio/model/ContribuicaoLog.php index be9c9d94..b9e86d6e 100644 --- a/html/apoio/model/ContribuicaoLog.php +++ b/html/apoio/model/ContribuicaoLog.php @@ -3,10 +3,10 @@ class ContribuicaoLog{ private $id; private $valor; private $codigo; - private $data_geracao; - private $data_vencimento; - private $id_socio; - private $statusPagamento; + private $dataGeracao; + private $dataVencimento; + private $idSocio; + private $statusPagamento = 0; /** * Get the value of id @@ -69,61 +69,61 @@ public function setCodigo($codigo) } /** - * Get the value of data_geracao + * Get the value of dataGeracao */ - public function getData_geracao() + public function getDataGeracao() { - return $this->data_geracao; + return $this->dataGeracao; } /** - * Set the value of data_geracao + * Set the value of dataGeracao * * @return self */ - public function setData_geracao($data_geracao) + public function setDataGeracao($dataGeracao) { - $this->data_geracao = $data_geracao; + $this->dataGeracao = $dataGeracao; return $this; } /** - * Get the value of data_vencimento + * Get the value of dataVencimento */ - public function getData_vencimento() + public function getDataVencimento() { - return $this->data_vencimento; + return $this->dataVencimento; } /** - * Set the value of data_vencimento + * Set the value of dataVencimento * * @return self */ - public function setData_vencimento($data_vencimento) + public function setDataVencimento($dataVencimento) { - $this->data_vencimento = $data_vencimento; + $this->dataVencimento = $dataVencimento; return $this; } /** - * Get the value of id_socio + * Get the value of idSocio */ - public function getId_socio() + public function getIdSocio() { - return $this->id_socio; + return $this->idSocio; } /** - * Set the value of id_socio + * Set the value of idSocio * * @return self */ - public function setId_socio($id_socio) + public function setIdSocio($idSocio) { - $this->id_socio = $id_socio; + $this->idSocio = $idSocio; return $this; } From 4853256256a01bd8a78ff1f276f12af88504d210 Mon Sep 17 00:00:00 2001 From: GabrielPintoSouza Date: Wed, 25 Sep 2024 12:29:01 -0300 Subject: [PATCH 07/11] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20do=20m=C3=A9tod?= =?UTF-8?q?o=20de=20pagarPorId=20na=20classe=20ContribuicaoLogDAO=20[Issue?= =?UTF-8?q?=20#729]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/apoio/dao/ContribuicaoLogDAO.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/html/apoio/dao/ContribuicaoLogDAO.php b/html/apoio/dao/ContribuicaoLogDAO.php index b03a2c70..d4c1bfa2 100644 --- a/html/apoio/dao/ContribuicaoLogDAO.php +++ b/html/apoio/dao/ContribuicaoLogDAO.php @@ -14,7 +14,8 @@ public function __construct() } public function criar(ContribuicaoLog $contribuicaoLog){ - $sqlInserirContribuicaoLog = "INSERT INTO contribuicao_log ( + $sqlInserirContribuicaoLog = + "INSERT INTO contribuicao_log ( id_socio, codigo, valor, @@ -42,4 +43,13 @@ public function criar(ContribuicaoLog $contribuicaoLog){ $stmt->execute(); } + + public function pagarPorId($id){ + $sqlPagarPorId = "UPDATE contribuicao_log SET status_pagamento = 1 WHERE id=:id"; + + $stmt = $this->pdo->prepare($sqlPagarPorId); + $stmt->bindParam(':id', $id); + + $stmt->execute(); + } } \ No newline at end of file From 33a581650ad74ad5c1285a64530092e3cad09929 Mon Sep 17 00:00:00 2001 From: GabrielPintoSouza Date: Thu, 26 Sep 2024 09:27:51 -0300 Subject: [PATCH 08/11] =?UTF-8?q?Cria=C3=A7=C3=A3o=20da=20classe=20Contrib?= =?UTF-8?q?uicaoLogController=20[Issue=20#728]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ContribuicaoLogController.php | 54 +++++++++++++++++++ html/apoio/model/ContribuicaoLog.php | 47 ++++++++++------ 2 files changed, 85 insertions(+), 16 deletions(-) create mode 100644 html/apoio/controller/ContribuicaoLogController.php diff --git a/html/apoio/controller/ContribuicaoLogController.php b/html/apoio/controller/ContribuicaoLogController.php new file mode 100644 index 00000000..9107d26c --- /dev/null +++ b/html/apoio/controller/ContribuicaoLogController.php @@ -0,0 +1,54 @@ +format('Y-m-d'); + + $contribuicaoLog = new ContribuicaoLog(); + $contribuicaoLog + ->setValor($valor) + ->setCodigo($contribuicaoLog->gerarCodigo()) + ->setDataGeracao($dataGeracao) + ->setDataVencimento($dataVencimento) + ->setIdSocio($idSocio); + + try { + $contribuicaoLogDao = new ContribuicaoLogDAO(); + + /*Implementar controle de transação para que o log só seja registrado + caso o serviço de pagamento tenha sido executado*/ + $contribuicaoLogDao->criar($contribuicaoLog); + //Fazer chamada do serviço de pagamento requisitado + } catch (PDOException $e) { + //implementar tratamento de erro + echo 'Erro: '.$e->getMessage(); + } + } + + public function pagarPorId(){ + $idContribuicaoLog = filter_input(INPUT_POST, 'id_contribuicao'); + + if(!$idContribuicaoLog || $idContribuicaoLog < 1){ + http_response_code(400); + exit('O id fornecido não é válido');//substituir posteriormente por redirecionamento com mensagem de feedback + } + + try{ + $contribuicaoLogDao = new ContribuicaoLogDAO(); + $contribuicaoLogDao->pagarPorId($idContribuicaoLog); + }catch(PDOException $e){ + echo 'Erro: '.$e->getMessage(); //substituir posteriormente por redirecionamento com mensagem de feedback + } + } +} diff --git a/html/apoio/model/ContribuicaoLog.php b/html/apoio/model/ContribuicaoLog.php index b9e86d6e..424279b4 100644 --- a/html/apoio/model/ContribuicaoLog.php +++ b/html/apoio/model/ContribuicaoLog.php @@ -1,5 +1,6 @@ id; @@ -20,7 +35,7 @@ public function getId() * Set the value of id * * @return self - */ + */ public function setId($id) { $this->id = $id; @@ -30,7 +45,7 @@ public function setId($id) /** * Get the value of valor - */ + */ public function getValor() { return $this->valor; @@ -40,7 +55,7 @@ public function getValor() * Set the value of valor * * @return self - */ + */ public function setValor($valor) { $this->valor = $valor; @@ -50,7 +65,7 @@ public function setValor($valor) /** * Get the value of codigo - */ + */ public function getCodigo() { return $this->codigo; @@ -60,7 +75,7 @@ public function getCodigo() * Set the value of codigo * * @return self - */ + */ public function setCodigo($codigo) { $this->codigo = $codigo; @@ -70,7 +85,7 @@ public function setCodigo($codigo) /** * Get the value of dataGeracao - */ + */ public function getDataGeracao() { return $this->dataGeracao; @@ -80,7 +95,7 @@ public function getDataGeracao() * Set the value of dataGeracao * * @return self - */ + */ public function setDataGeracao($dataGeracao) { $this->dataGeracao = $dataGeracao; @@ -90,7 +105,7 @@ public function setDataGeracao($dataGeracao) /** * Get the value of dataVencimento - */ + */ public function getDataVencimento() { return $this->dataVencimento; @@ -100,7 +115,7 @@ public function getDataVencimento() * Set the value of dataVencimento * * @return self - */ + */ public function setDataVencimento($dataVencimento) { $this->dataVencimento = $dataVencimento; @@ -110,7 +125,7 @@ public function setDataVencimento($dataVencimento) /** * Get the value of idSocio - */ + */ public function getIdSocio() { return $this->idSocio; @@ -120,7 +135,7 @@ public function getIdSocio() * Set the value of idSocio * * @return self - */ + */ public function setIdSocio($idSocio) { $this->idSocio = $idSocio; @@ -130,7 +145,7 @@ public function setIdSocio($idSocio) /** * Get the value of statusPagamento - */ + */ public function getStatusPagamento() { return $this->statusPagamento; @@ -140,11 +155,11 @@ public function getStatusPagamento() * Set the value of statusPagamento * * @return self - */ + */ public function setStatusPagamento($statusPagamento) { $this->statusPagamento = $statusPagamento; return $this; } -} \ No newline at end of file +} From d34c2768410371d78ad1aae9d790b7c7e9b3ceef Mon Sep 17 00:00:00 2001 From: GabrielPintoSouza Date: Thu, 26 Sep 2024 10:59:46 -0300 Subject: [PATCH 09/11] =?UTF-8?q?Cria=C3=A7=C3=A3o=20da=20ApiBoletoService?= =?UTF-8?q?Interface=20[Issue=20#730]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/apoio/service/ApiBoletoServiceInterface.php | 7 +++++++ html/apoio/service/PagarMeBoletoService.php | 11 +++++++++++ 2 files changed, 18 insertions(+) create mode 100644 html/apoio/service/ApiBoletoServiceInterface.php create mode 100644 html/apoio/service/PagarMeBoletoService.php diff --git a/html/apoio/service/ApiBoletoServiceInterface.php b/html/apoio/service/ApiBoletoServiceInterface.php new file mode 100644 index 00000000..16ffbad2 --- /dev/null +++ b/html/apoio/service/ApiBoletoServiceInterface.php @@ -0,0 +1,7 @@ + Date: Thu, 26 Sep 2024 12:35:05 -0300 Subject: [PATCH 10/11] =?UTF-8?q?Cria=C3=A7=C3=A3o=20da=20classe=20model?= =?UTF-8?q?=20Socio=20[Issue=20#731]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/apoio/model/Socio.php | 215 +++++++++++++++++++++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 html/apoio/model/Socio.php diff --git a/html/apoio/model/Socio.php b/html/apoio/model/Socio.php new file mode 100644 index 00000000..a514a334 --- /dev/null +++ b/html/apoio/model/Socio.php @@ -0,0 +1,215 @@ +nome; + } + + /** + * Set the value of nome + * + * @return self + */ + public function setNome($nome) + { + $this->nome = $nome; + + return $this; + } + + /** + * Get the value of telefone + */ + public function getTelefone() + { + return $this->telefone; + } + + /** + * Set the value of telefone + * + * @return self + */ + public function setTelefone($telefone) + { + $this->telefone = $telefone; + + return $this; + } + + /** + * Get the value of email + */ + public function getEmail() + { + return $this->email; + } + + /** + * Set the value of email + * + * @return self + */ + public function setEmail($email) + { + $this->email = $email; + + return $this; + } + + /** + * Get the value of estado + */ + public function getEstado() + { + return $this->estado; + } + + /** + * Set the value of estado + * + * @return self + */ + public function setEstado($estado) + { + $this->estado = $estado; + + return $this; + } + + /** + * Get the value of cidade + */ + public function getCidade() + { + return $this->cidade; + } + + /** + * Set the value of cidade + * + * @return self + */ + public function setCidade($cidade) + { + $this->cidade = $cidade; + + return $this; + } + + /** + * Get the value of bairro + */ + public function getBairro() + { + return $this->bairro; + } + + /** + * Set the value of bairro + * + * @return self + */ + public function setBairro($bairro) + { + $this->bairro = $bairro; + + return $this; + } + + + + /** + * Get the value of complemento + */ + public function getComplemento() + { + return $this->complemento; + } + + /** + * Set the value of complemento + * + * @return self + */ + public function setComplemento($complemento) + { + $this->complemento = $complemento; + + return $this; + } + + /** + * Get the value of cep + */ + public function getCep() + { + return $this->cep; + } + + /** + * Set the value of cep + * + * @return self + */ + public function setCep($cep) + { + $this->cep = $cep; + + return $this; + } + + /** + * Get the value of numeroEndereco + */ + public function getNumeroEndereco() + { + return $this->numeroEndereco; + } + + /** + * Set the value of numeroEndereco + * + * @return self + */ + public function setNumeroEndereco($numeroEndereco) + { + $this->numeroEndereco = $numeroEndereco; + + return $this; + } + + /** + * Get the value of logradouro + */ + public function getLogradouro() + { + return $this->logradouro; + } + + /** + * Set the value of logradouro + * + * @return self + */ + public function setLogradouro($logradouro) + { + $this->logradouro = $logradouro; + + return $this; + } +} \ No newline at end of file From f28f891fb47939b60c835626aa4de5064ab66a8e Mon Sep 17 00:00:00 2001 From: GabrielPintoSouza Date: Fri, 27 Sep 2024 12:25:27 -0300 Subject: [PATCH 11/11] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20da=20funcionali?= =?UTF-8?q?dade=20de=20buscar=20um=20s=C3=B3cio=20atrav=C3=A9s=20do=20docu?= =?UTF-8?q?mento=20[Issue=20#731]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- html/apoio/controller/SocioController.php | 27 ++++++++++ html/apoio/dao/SocioDAO.php | 61 +++++++++++++++++++++++ html/apoio/view/teste.php | 16 ++++++ 3 files changed, 104 insertions(+) create mode 100644 html/apoio/controller/SocioController.php create mode 100644 html/apoio/dao/SocioDAO.php create mode 100644 html/apoio/view/teste.php diff --git a/html/apoio/controller/SocioController.php b/html/apoio/controller/SocioController.php new file mode 100644 index 00000000..891412aa --- /dev/null +++ b/html/apoio/controller/SocioController.php @@ -0,0 +1,27 @@ + 'O documento informado não é válido.']);exit; + } + + try{ + $socioDao = new SocioDAO(); + $socio = $socioDao->buscarPorDocumento($documento); + + if(!$socio || is_null($socio)){ + echo json_encode(['Resultado' => 'Sócio não encontrado']);exit; + } + + print_r($socio); //Averiguar a melhor maneira de retornar um sócio para o requisitante + }catch(PDOException $e){ + http_response_code(500); + echo json_encode(['Erro' => $e->getMessage()]);exit; + } + } +} \ No newline at end of file diff --git a/html/apoio/dao/SocioDAO.php b/html/apoio/dao/SocioDAO.php new file mode 100644 index 00000000..ac4e5755 --- /dev/null +++ b/html/apoio/dao/SocioDAO.php @@ -0,0 +1,61 @@ +pdo = ConexaoDAO::conectar(); + } + + public function buscarPorDocumento($documento){ + $sqlBuscaPorDocumento = + "SELECT + pessoa.id_pessoa, + pessoa.nome, + pessoa.telefone, + pessoa.cep, + pessoa.estado, + pessoa.cidade, + pessoa.bairro, + pessoa.complemento, + pessoa.numero_endereco, + pessoa.logradouro, + socio.id_pessoa, + socio.email + FROM pessoa, socio + WHERE pessoa.id_pessoa = socio.id_pessoa + AND pessoa.cpf=:documento"; + + $stmt = $this->pdo->prepare($sqlBuscaPorDocumento); + $stmt->bindParam(':documento', $documento); + + $stmt->execute(); + + if($stmt->rowCount() === 0){ + return null; + } + + $socioArray = $stmt->fetch(PDO::FETCH_ASSOC); + + $socio = new Socio(); + $socio + ->setNome($socioArray['nome']) + ->setTelefone($socioArray['telefone']) + ->setEmail($socioArray['email']) + ->setEstado($socioArray['estado']) + ->setTelefone($socioArray['telefone']) + ->setCidade($socioArray['cidade']) + ->setBairro($socioArray['bairro']) + ->setComplemento($socioArray['complemento']) + ->setCep($socioArray['cep']) + ->setNumeroEndereco($socioArray['numero_endereco']) + ->setLogradouro($socioArray['logradouro']); + + return $socio; + } +} \ No newline at end of file diff --git a/html/apoio/view/teste.php b/html/apoio/view/teste.php new file mode 100644 index 00000000..1cd9a870 --- /dev/null +++ b/html/apoio/view/teste.php @@ -0,0 +1,16 @@ + + + + + + Teste sócio por documento + + +
+ + + + +
+ + \ No newline at end of file