Skip to content

Commit

Permalink
Implementação da funcionalidade de alterar o status de um gateway de …
Browse files Browse the repository at this point in the history
…pagamento
  • Loading branch information
GabrielPintoSouza committed Sep 18, 2024
1 parent 49bafc7 commit f85a19a
Show file tree
Hide file tree
Showing 3 changed files with 107 additions and 5 deletions.
56 changes: 54 additions & 2 deletions html/contribuicao/configuracao/assets/js/gatewayPagamento.js
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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);
});
});
});

});
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
}
18 changes: 18 additions & 0 deletions html/contribuicao/configuracao/src/dao/GatewayPagamentoDAO.php
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
}
}

0 comments on commit f85a19a

Please sign in to comment.