diff --git a/endpoints/payments/payment.php b/endpoints/payments/payment.php new file mode 100644 index 0000000..05be2cc --- /dev/null +++ b/endpoints/payments/payment.php @@ -0,0 +1,45 @@ + false, + "message" => "Your session expired. Please login again" + ])); +} + +if (!isset($_GET['paymentId']) || !isset($_GET['enabled'])) { + die(json_encode([ + "success" => false, + "message" => "Some fields are missing." + ])); +} + +$paymentId = $_GET['paymentId']; + +$inUse = $db->querySingle('SELECT COUNT(*) as count FROM subscriptions WHERE payment_method_id=' . $paymentId) === 1; +if ($inUse) { + die(json_encode([ + "success" => false, + "message" => "Can't delete used payment method" + ])); +} + +$enabled = $_GET['enabled']; + +$sqlUpdate = 'UPDATE payment_methods SET enabled=:enabled WHERE id=:id'; +$stmtUpdate = $db->prepare($sqlUpdate); +$stmtUpdate->bindParam(':enabled', $enabled); +$stmtUpdate->bindParam(':id', $paymentId); +$resultUpdate = $stmtUpdate->execute(); + +if ($resultUpdate) { + die(json_encode([ + "success" => true + ])); +} + +die(json_encode([ + "success" => false, + "message" => "Failed to update payment method in the database" +])); diff --git a/includes/getdbkeys.php b/includes/getdbkeys.php index e5d7ff9..0f0a874 100644 --- a/includes/getdbkeys.php +++ b/includes/getdbkeys.php @@ -17,8 +17,9 @@ } $payment_methods = array(); - $query = "SELECT * FROM payment_methods"; - $result = $db->query($query); + $query = $db->prepare("SELECT * FROM payment_methods WHERE enabled=:enabled"); + $query->bindValue(':enabled', 1, SQLITE3_INTEGER); + $result = $query->execute(); while ($row = $result->fetchArray(SQLITE3_ASSOC)) { $payment_methodId = $row['id']; $payment_methods[$payment_methodId] = $row; diff --git a/migrations/000002.php b/migrations/000002.php new file mode 100644 index 0000000..720ae04 --- /dev/null +++ b/migrations/000002.php @@ -0,0 +1,7 @@ +exec('ALTER TABLE payment_methods ADD COLUMN enabled BOOLEAN DEFAULT 1'); +$db->exec('UPDATE payment_methods SET enabled = 1'); diff --git a/scripts/settings.js b/scripts/settings.js index e4d9d34..8f78edb 100644 --- a/scripts/settings.js +++ b/scripts/settings.js @@ -411,6 +411,35 @@ function editCurrency(currencyId) { } } +function togglePayment(paymentId) { + const element = document.querySelector(`div[data-paymentid="${paymentId}"]`); + + if (element.dataset.inUse === 'yes') { + return showErrorMessage('Can\'t delete used payment method'); + } + + const newEnabledState = element.dataset.enabled === '1' ? '0' : '1'; + const paymentMethodName = element.querySelector('.payment-name').innerText; + + const url = `endpoints/payments/payment.php?action=toggle&paymentId=${paymentId}&enabled=${newEnabledState}`; + + fetch(url).then(response => { + if (!response.ok) { + throw new Error("There was an error saving the payments method"); + } + return response.json(); + }).then(data => { + if (data.success) { + element.dataset.enabled = newEnabledState; + showSuccessMessage(`${paymentMethodName} was saved`); + } else { + showErrorMessage(data.message || "Failed to save payments method"); + } + }).catch(error => { + showErrorMessage(error.message || "There was an error saving the payments method"); + }); +} + document.addEventListener('DOMContentLoaded', function() { document.getElementById("userForm").addEventListener("submit", function(event) { diff --git a/settings.php b/settings.php index 3ea6b3e..974b2d4 100644 --- a/settings.php +++ b/settings.php @@ -486,9 +486,21 @@