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