From 8189fd7d86c3f719e2079b020f362666c005e45d Mon Sep 17 00:00:00 2001 From: Dario Rekowski on RockPI Date: Mon, 2 Mar 2020 11:26:38 +0000 Subject: [PATCH] increase creation validation range to 2 month and 2.000 GDD --- config/routes.php | 7 ++++-- .../TransactionCreationsController.php | 8 ++++--- src/Model/Transactions/TransactionBody.php | 2 +- .../Transactions/TransactionCreation.php | 11 ++++++--- .../TransactionCreations/create_multi.ctp | 4 ++-- src/Template/Transactions/send_to_node.ctp | 24 +++++++++++++++---- 6 files changed, 40 insertions(+), 16 deletions(-) diff --git a/config/routes.php b/config/routes.php index 0aec385cc..453012d06 100644 --- a/config/routes.php +++ b/config/routes.php @@ -55,8 +55,11 @@ Router::scope('/', function (RouteBuilder $routes) { $csrf->whitelistCallback(function ($request) { // Skip token check for API URLs. //die($request->getParam('controller')); - if($request->getParam('controller') === 'JsonRequestHandler') { - return true; + $whitelist = ['JsonRequestHandler', 'ElopageWebhook']; + foreach($whitelist as $entry) { + if($request->getParam('controller') === $entry) { + return true; + } } }); diff --git a/src/Controller/TransactionCreationsController.php b/src/Controller/TransactionCreationsController.php index 6e477a6c8..924e1c3fd 100644 --- a/src/Controller/TransactionCreationsController.php +++ b/src/Controller/TransactionCreationsController.php @@ -197,7 +197,7 @@ class TransactionCreationsController extends AppController $connection = ConnectionManager::get('default'); $transactionActiveMonth = $connection->execute( 'SELECT id, received FROM transactions ' - . 'where received >= date_add(curdate(), interval 1 - day(curdate()) day) ' + . 'where received >= date_sub(date_add(curdate(), interval 1 - day(curdate()) day), interval 1 month) ' . 'AND ' . 'received < date_add(date_add(curdate(), interval 1 - day(curdate()) day), interval 1 month) ' . 'AND ' @@ -229,14 +229,16 @@ class TransactionCreationsController extends AppController $sumAmount += $transactionCreation->amount; } } - //if($sumAmount < 10000000) { + //if($sumAmount < 20000000) { array_push($possibleReceiver, [ 'name' => $stateUser->first_name . ' ' . $stateUser->last_name, 'id' => $stateUser->id, 'email' => $stateUser->email, 'amount' => $sumAmount ]); - //} + /*} else { + $this->Flash->error(__('Creation above 2.000 GDD for 2 last two month')); + }*/ } usort($possibleReceiver, function($a, $b) { return (strtolower ($a['name']) <=> strtolower ($b['name'])); diff --git a/src/Model/Transactions/TransactionBody.php b/src/Model/Transactions/TransactionBody.php index 331e10fce..d2323b728 100644 --- a/src/Model/Transactions/TransactionBody.php +++ b/src/Model/Transactions/TransactionBody.php @@ -163,7 +163,7 @@ class TransactionBody extends TransactionBase { $protoBody->setCreation(TransactionCreation::fromEntity($transaction->transaction_creations[0])->getProto()); } else if(count($transaction->transaction_send_coins) == 1) { - echo "is transfer"; + //echo "is transfer"; $protoBody->setTransfer(TransactionTransfer::fromEntity($transaction->transaction_send_coins)->getProto()); } else { return ['invalid transaction type or count']; diff --git a/src/Model/Transactions/TransactionCreation.php b/src/Model/Transactions/TransactionCreation.php index 75c1df709..e430a8039 100644 --- a/src/Model/Transactions/TransactionCreation.php +++ b/src/Model/Transactions/TransactionCreation.php @@ -109,7 +109,12 @@ class TransactionCreation extends TransactionBase { //$existingCreations->select(['amount_sum' => $existingCreations->func()->sum('amount')]); $existingCreations->select(['amount', 'state_user_id']); $existingCreations->matching('Transactions', function ($q) { - return $q->where(['EXTRACT(YEAR_MONTH FROM Transactions.received) LIKE EXTRACT(YEAR_MONTH FROM NOW())']); + + return $q->where( + ['OR' => + ['EXTRACT(YEAR_MONTH FROM Transactions.received) LIKE EXTRACT(YEAR_MONTH FROM NOW())', + 'EXTRACT(YEAR_MONTH FROM DATE_ADD(Transactions.received, INTERVAL 1 MONTH)) LIKE EXTRACT(YEAR_MONTH FROM NOW())'] + ])->select('received'); }); //debug($existingCreations); $newSum = $this->getAmount(); @@ -121,8 +126,8 @@ class TransactionCreation extends TransactionBase { $newSum += $creation->amount; } } - if($newSum > 10000000) { - $this->addError('TransactionCreation::validate', 'Creation more than 1.000 GDD per Month not allowed'); + if($newSum > 20000000) { + $this->addError('TransactionCreation::validate', 'Creation more than 1.000 GDD per Month (2 Month) not allowed'); return false; } //die("\n"); diff --git a/src/Template/TransactionCreations/create_multi.ctp b/src/Template/TransactionCreations/create_multi.ctp index 021d7e7b1..f37b9d417 100644 --- a/src/Template/TransactionCreations/create_multi.ctp +++ b/src/Template/TransactionCreations/create_multi.ctp @@ -65,7 +65,7 @@ $this->assign('title', __('Schöpfungstransaktion')); Form->control('amount', ['required' => false]); ?> 10000000) { + if($activeUser['id'] == $possibleReceiver['id'] || $possibleReceiver['amount'] > 20000000) { $disable = 'disabled'; } ?> @@ -92,7 +92,7 @@ $this->assign('title', __('Schöpfungstransaktion')); - In diesem Monat bereits geschöpft: element('printGradido', ['number' => $possibleReceiver['amount']]);?> + In diesem und letztem Monat bereits geschöpft: element('printGradido', ['number' => $possibleReceiver['amount']]);?> diff --git a/src/Template/Transactions/send_to_node.ctp b/src/Template/Transactions/send_to_node.ctp index a79a12248..0bb652feb 100644 --- a/src/Template/Transactions/send_to_node.ctp +++ b/src/Template/Transactions/send_to_node.ctp @@ -53,7 +53,7 @@ Letzte eingereichte Transaktion if(gTransactionIds[index] === undefined) { return; } - console.log("index: %d", index); + //console.log("index: %d", index); var progressState = $('#put-progress .progress-state').eq(index); progressState.html('Wird verarbeitet'); @@ -66,7 +66,12 @@ Letzte eingereichte Transaktion headers: {'X-CSRF-Token': csfr_token}, dataType: 'json', success: function (data) { - if(data.result.state === 'success') { + var isNodeAnswer = true; + if(typeof data.result === 'undefined') { + isNodeAnswer = false; + } + //console.log("node answer: %o", isNodeAnswer) + if(isNodeAnswer && data.result.state === 'success') { progressState.addClass('grd-success').html('Erfolgreich eingereicht'); setTimeout(function() { putTransaction(index+1);}, 1000); } else { @@ -74,11 +79,20 @@ Letzte eingereichte Transaktion if(_index <= index) return; $(dom).html('Abgebrochen'); }); - progressState.addClass('grd-error').html('Fehler beim einreichen'); + //console.log("Fehler beim einreichen") + if(isNodeAnswer) { + progressState.addClass('grd-error').html('Fehler beim einreichen'); + } else { + progressState.addClass('grd-error').html('Fehler auf Community Server'); + } } var timeString = round_to_precision(data.timeUsed * 1000.0, 4) + ' ms'; - var nodeTime = data.result.timeUsed; - progressState.append(' ').append('' + timeString + ' (node: ' + nodeTime + ')'); + if(isNodeAnswer) { + var nodeTime = data.result.timeUsed; + progressState.append(' ').append('' + timeString + ' (node: ' + nodeTime + ')'); + } else { + progressState.append(' ').append('' + timeString + ''); + } } }); }