diff --git a/html/contribuicao/configuracao/assets/js/gatewayPagamento.js b/html/contribuicao/configuracao/assets/js/gatewayPagamento.js
index 292e8835..16385e04 100644
--- a/html/contribuicao/configuracao/assets/js/gatewayPagamento.js
+++ b/html/contribuicao/configuracao/assets/js/gatewayPagamento.js
@@ -1,9 +1,9 @@
-document.addEventListener('DOMContentLoaded', function() {
+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() {
+ 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;
@@ -19,4 +19,56 @@ document.addEventListener('DOMContentLoaded', function() {
$('#editModal').modal('show');
});
});
+
+ //Checkbox de ativar/desativar um gateway
+ const toggles = document.querySelectorAll('.toggle-input');
+
+ toggles.forEach(toggle => {
+ toggle.addEventListener('change', function (ev) {
+ 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', 'GatewayPagamentoController');
+ data.append('metodo', 'alterarStatus');
+ /*const data = {
+ id: idNumber,
+ status: isChecked,
+ nomeClasse: 'GatewayPagamentoController',
+ metodo: 'alterarStatus'
+ };*/
+
+ // Enviar dados via fetch (POST)
+ fetch('./src/controller/control.php', {
+ 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/contribuicao/configuracao/src/controller/GatewayPagamentoController.php b/html/contribuicao/configuracao/src/controller/GatewayPagamentoController.php
index 86859a9d..ec10ba04 100644
--- a/html/contribuicao/configuracao/src/controller/GatewayPagamentoController.php
+++ b/html/contribuicao/configuracao/src/controller/GatewayPagamentoController.php
@@ -72,20 +72,52 @@ public function excluirPorId()
/**
* Realiza os procedimentos necessários para alterar as informações de um gateway de pagamento do sistema
*/
- public function editarPorId(){
+ public function editarPorId()
+ {
$gatewayId = $_POST['id'];
$gatewayNome = $_POST['nome'];
$gatewayEndepoint = $_POST['endpoint'];
$gatewayToken = $_POST['token'];
- try{
+ try {
$gatewayPagamento = new GatewayPagamento($gatewayNome, $gatewayEndepoint, $gatewayToken);
$gatewayPagamento->setId($gatewayId);
$gatewayPagamento->editar();
header("Location: ../../gateway_pagamento.php?msg=editar-sucesso#mensagem-tabela");
- }catch(Exception $e){
+ } catch (Exception $e) {
header("Location: ../../gateway_pagamento.php?msg=editar-falha#mensagem-tabela");
}
//echo 'Editando gateway de id: '.$gatewayId;
}
+
+ 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/contribuicao/configuracao/src/dao/GatewayPagamentoDAO.php b/html/contribuicao/configuracao/src/dao/GatewayPagamentoDAO.php
index d231cc9f..7899b842 100644
--- a/html/contribuicao/configuracao/src/dao/GatewayPagamentoDAO.php
+++ b/html/contribuicao/configuracao/src/dao/GatewayPagamentoDAO.php
@@ -96,4 +96,22 @@ public function editarPorId($id, $nome, $endpoint, $token){
throw new Exception();
}
}
+
+ 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