From b88a7dd029886a54316bddc74bcf5c96ed7f10b8 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Mon, 3 May 2021 11:51:27 +0200 Subject: [PATCH 01/17] give balance as float value in GDD (not lpnger GDD cent) --- community_server/src/Controller/AppRequestsController.php | 2 +- community_server/src/Model/Entity/StateBalance.php | 8 +++++++- community_server/src/Model/Table/TransactionsTable.php | 8 ++++---- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/community_server/src/Controller/AppRequestsController.php b/community_server/src/Controller/AppRequestsController.php index dfc11d4a2..bc9512abc 100644 --- a/community_server/src/Controller/AppRequestsController.php +++ b/community_server/src/Controller/AppRequestsController.php @@ -286,7 +286,7 @@ class AppRequestsController extends AppController $now = new FrozenTime(); return $this->returnJson([ 'state' => 'success', - 'balance' => $state_balance->amount, + 'balance' => $state_balance->amount_float, 'decay' => $state_balance->partDecay($now), 'decay_date' => $now ]); diff --git a/community_server/src/Model/Entity/StateBalance.php b/community_server/src/Model/Entity/StateBalance.php index 0860d15b7..a4407613d 100644 --- a/community_server/src/Model/Entity/StateBalance.php +++ b/community_server/src/Model/Entity/StateBalance.php @@ -34,7 +34,7 @@ class StateBalance extends Entity 'state_user' => true ]; - protected $_virtual = ['decay']; + protected $_virtual = ['decay','amount_float']; private function convertToTimestamp($dateOrTime) { @@ -67,6 +67,12 @@ class StateBalance extends Entity return intval($this->amount * pow(0.99999997802044727, $decay_duration)); } + + protected function _getAmountFloat() + { + return floatval($this->amount) / 10000.0; + } + public function partDecay($target_date) { $decay_duration = intval($this->convertToTimestamp($target_date) - $this->convertToTimestamp($this->record_date)); diff --git a/community_server/src/Model/Table/TransactionsTable.php b/community_server/src/Model/Table/TransactionsTable.php index 00f00b904..933c52b1c 100644 --- a/community_server/src/Model/Table/TransactionsTable.php +++ b/community_server/src/Model/Table/TransactionsTable.php @@ -188,7 +188,7 @@ class TransactionsTable extends Table //echo "prev balance: " . $prev->balance . ", diff_amount: $diff_amount, summe: " . (-intval($prev->balance - $diff_amount)) . "
"; $final_transactions[] = [ 'type' => 'decay', - 'balance' => -intval($prev->balance - $diff_amount), + 'balance' => floatval(-intval($prev->balance - $diff_amount)) / 10000.0, 'decay_duration' => $interval->format('%a days, %H hours, %I minutes, %S seconds'), 'memo' => '' ]; @@ -212,7 +212,7 @@ class TransactionsTable extends Table 'type' => 'creation', 'transaction_id' => $transaction->id, 'date' => $creation->target_date, - 'balance' => $creation->amount, + 'balance' => $creation->amount_float, 'memo' => $transaction->memo ]; } else if($su_transaction->transaction_type_id == 2) { // transfer or send coins @@ -245,7 +245,7 @@ class TransactionsTable extends Table 'type' => $type, 'transaction_id' => $sendCoins->transaction_id, 'date' => $transaction->received, - 'balance' => $sendCoins->amount, + 'balance' => $sendCoins->amount_float, 'memo' => $transaction->memo, 'pubkey' => $other_user_public ]; @@ -256,7 +256,7 @@ class TransactionsTable extends Table $state_balance->record_date = $su_transaction->balance_date; $final_transactions[] = [ 'type' => 'decay', - 'balance' => -intval($su_transaction->balance - $state_balance->decay), + 'balance' => floatval(-intval($su_transaction->balance - $state_balance->decay)) / 10000, 'decay_duration' => $su_transaction->balance_date->timeAgoInWords(), 'memo' => '' ]; From 2e8786b05dd797847416fc3bd527680631303f21 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Mon, 3 May 2021 11:54:59 +0200 Subject: [PATCH 02/17] update doc --- docu/community-server.api.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docu/community-server.api.md b/docu/community-server.api.md index 1c95c74b3..20a15014d 100644 --- a/docu/community-server.api.md +++ b/docu/community-server.api.md @@ -23,13 +23,13 @@ Additional session can be provided as GET-Parameter ```json { "state":"success", - "balance":15906078, + "balance":1590.60, "decay":15873851, "decay_date":"2021-04-16T11:47:21+00:00" } ``` -- `balance` : balance describes gradido cents which are 4 digits behind the separator. A balance value of 174500 equals therefor 17,45 GDD +- `balance` : balance describes gradido - `decay` : balance with decay on it at the time in decay_date, so it is the precise balance of user at time of calling this function - `decay_date`: date and time for decay amount, should be the time and date of function call @@ -65,7 +65,7 @@ Assuming: session is valid "type": "send", "transaction_id": 2, "date": "2021-02-19T13:25:36+00:00", - "balance": 1920000, + "balance": 192, "memo": "a piece of cake :)", "pubkey": "038a6f93270dc57b91d76bf110ad3863fcb7d1b08e7692e793fcdb4467e5b6a7" } @@ -95,7 +95,7 @@ Transaction: - `receiver`: user has received gradidos from another user - `transaction_id`: id of transaction in db, in stage2 also the hedera sequence number of transaction - `date`: date of ordering transaction (booking date) -- `balance`: Gradido Cent, 4 Nachkommastellen (2 Reserve), 1920000 = 192,00 GDD +- `balance`: Gradido - `memo`: Details about transaction ## Creation transaction From cf0d2ea48601d19b1a4e709d6c3b745faed5050b Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 4 May 2021 12:59:03 +0200 Subject: [PATCH 03/17] adjust frontend to chaged made in backend (factor 10000) --- frontend/README.md | 4 ++-- frontend/src/views/KontoOverview/GddSend.vue | 1 + frontend/src/views/KontoOverview/GddTable.vue | 2 +- frontend/src/views/Layout/DashboardLayout_gdd.vue | 4 ++-- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/frontend/README.md b/frontend/README.md index 71dfcd39c..d94034c15 100755 --- a/frontend/README.md +++ b/frontend/README.md @@ -176,7 +176,7 @@ Wenn alles okay: "type": "creation|send|receive", "transaction_id": , // db id not id from blockchain "date": "", - "balance": , + "balance": , "memo": "", "pubkey": "" @@ -319,7 +319,7 @@ Wenn alles okay: "type": "creation|send|receive", "transaction_id": , // db id not id from blockchain "date": "", - "balance": , + "balance": , "memo": "", "pubkey": "" diff --git a/frontend/src/views/KontoOverview/GddSend.vue b/frontend/src/views/KontoOverview/GddSend.vue index 64e71ab39..9b0c0892c 100644 --- a/frontend/src/views/KontoOverview/GddSend.vue +++ b/frontend/src/views/KontoOverview/GddSend.vue @@ -255,6 +255,7 @@ export default { const result = await communityAPI.send( this.$store.state.session_id, this.ajaxCreateData.email, + // better to send the user's input here? this.ajaxCreateData.amount * 10000, this.ajaxCreateData.memo, this.ajaxCreateData.target_date, diff --git a/frontend/src/views/KontoOverview/GddTable.vue b/frontend/src/views/KontoOverview/GddTable.vue index e8e1f3cd3..40bb73c4c 100644 --- a/frontend/src/views/KontoOverview/GddTable.vue +++ b/frontend/src/views/KontoOverview/GddTable.vue @@ -22,7 +22,7 @@ style="color: green" >

- {{ $n(item.balance / 10000) }} + {{ $n(item.balance) }} GDD

{{ item.name }}

diff --git a/frontend/src/views/Layout/DashboardLayout_gdd.vue b/frontend/src/views/Layout/DashboardLayout_gdd.vue index 79270493a..d449dc1ac 100755 --- a/frontend/src/views/Layout/DashboardLayout_gdd.vue +++ b/frontend/src/views/Layout/DashboardLayout_gdd.vue @@ -94,7 +94,7 @@ export default { async loadBalance() { const result = await communityAPI.balance(this.$store.state.session_id) if (result.success) { - this.balance = result.result.data.balance / 10000 + this.balance = result.result.data.balance// / 10000 } else { // what to do when loading balance fails? } @@ -102,7 +102,7 @@ export default { async loadGDTBalance() { const result = await communityAPI.transactions(this.$store.state.session_id) if (result.success) { - this.GdtBalance = result.result.data.gdtSum / 10000 + this.GdtBalance = result.result.data.gdtSum// / 10000 } else { // what to do when loading balance fails? } From 5306ff3fc641157b4421b2d65bdc64de776aedc0 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 4 May 2021 13:31:53 +0200 Subject: [PATCH 04/17] linting --- frontend/src/views/Layout/DashboardLayout_gdd.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/views/Layout/DashboardLayout_gdd.vue b/frontend/src/views/Layout/DashboardLayout_gdd.vue index d449dc1ac..48a486171 100755 --- a/frontend/src/views/Layout/DashboardLayout_gdd.vue +++ b/frontend/src/views/Layout/DashboardLayout_gdd.vue @@ -94,7 +94,7 @@ export default { async loadBalance() { const result = await communityAPI.balance(this.$store.state.session_id) if (result.success) { - this.balance = result.result.data.balance// / 10000 + this.balance = result.result.data.balance // / 10000 } else { // what to do when loading balance fails? } @@ -102,7 +102,7 @@ export default { async loadGDTBalance() { const result = await communityAPI.transactions(this.$store.state.session_id) if (result.success) { - this.GdtBalance = result.result.data.gdtSum// / 10000 + this.GdtBalance = result.result.data.gdtSum // / 10000 } else { // what to do when loading balance fails? } From 39fff3e42ad59d7ceda498eb7af6852032a44150 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Tue, 4 May 2021 13:35:49 +0200 Subject: [PATCH 05/17] return also GDT as float instead of integer --- community_server/src/Controller/AppRequestsController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/community_server/src/Controller/AppRequestsController.php b/community_server/src/Controller/AppRequestsController.php index bc9512abc..17105e2b9 100644 --- a/community_server/src/Controller/AppRequestsController.php +++ b/community_server/src/Controller/AppRequestsController.php @@ -342,7 +342,7 @@ class AppRequestsController extends AppController 'transactions' => $transactions, 'transactionExecutingCount' => $session->read('Transactions.executing'), 'count' => count($transactions), - 'gdtSum' => $gdtSum, + 'gdtSum' => floatval($gdtSum) / 100.0, 'timeUsed' => microtime(true) - $startTime ]); } From 9bcd56f969d582dc08884dd74f60eaf3668407db Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Tue, 4 May 2021 13:51:16 +0200 Subject: [PATCH 06/17] limit GDD to 2 decimal places --- community_server/src/Model/Entity/StateBalance.php | 3 ++- community_server/src/Model/Table/TransactionsTable.php | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/community_server/src/Model/Entity/StateBalance.php b/community_server/src/Model/Entity/StateBalance.php index a4407613d..4303ba1ac 100644 --- a/community_server/src/Model/Entity/StateBalance.php +++ b/community_server/src/Model/Entity/StateBalance.php @@ -3,6 +3,7 @@ namespace App\Model\Entity; use Cake\ORM\Entity; use Cake\I18n\Time; +use Cake\I18n\Number; /** * StateBalance Entity @@ -70,7 +71,7 @@ class StateBalance extends Entity protected function _getAmountFloat() { - return floatval($this->amount) / 10000.0; + return Number::format(floatval($this->amount) / 10000.0, ['precision' => 2]); } public function partDecay($target_date) diff --git a/community_server/src/Model/Table/TransactionsTable.php b/community_server/src/Model/Table/TransactionsTable.php index 933c52b1c..6cd715874 100644 --- a/community_server/src/Model/Table/TransactionsTable.php +++ b/community_server/src/Model/Table/TransactionsTable.php @@ -6,7 +6,7 @@ use Cake\ORM\RulesChecker; use Cake\ORM\Table; use Cake\Validation\Validator; use Cake\ORM\TableRegistry; - +use Cake\I18n\Number; /** * Transactions Model * @@ -188,7 +188,7 @@ class TransactionsTable extends Table //echo "prev balance: " . $prev->balance . ", diff_amount: $diff_amount, summe: " . (-intval($prev->balance - $diff_amount)) . "
"; $final_transactions[] = [ 'type' => 'decay', - 'balance' => floatval(-intval($prev->balance - $diff_amount)) / 10000.0, + 'balance' => Number::format(floatval(-intval($prev->balance - $diff_amount)) / 10000.0, ['precision' => 2]), 'decay_duration' => $interval->format('%a days, %H hours, %I minutes, %S seconds'), 'memo' => '' ]; @@ -256,7 +256,7 @@ class TransactionsTable extends Table $state_balance->record_date = $su_transaction->balance_date; $final_transactions[] = [ 'type' => 'decay', - 'balance' => floatval(-intval($su_transaction->balance - $state_balance->decay)) / 10000, + 'balance' => Number::format(floatval(-intval($su_transaction->balance - $state_balance->decay)) / 10000.0, ['precision' => 2]), 'decay_duration' => $su_transaction->balance_date->timeAgoInWords(), 'memo' => '' ]; From c709b9b284706d18982fb184bba857b859b641f1 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Tue, 4 May 2021 13:51:49 +0200 Subject: [PATCH 07/17] compare pubkeys direct in json call --- .../src/cpp/JSONInterface/JsonCreateTransaction.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/login_server/src/cpp/JSONInterface/JsonCreateTransaction.cpp b/login_server/src/cpp/JSONInterface/JsonCreateTransaction.cpp index 7473b178f..381ded7e5 100644 --- a/login_server/src/cpp/JSONInterface/JsonCreateTransaction.cpp +++ b/login_server/src/cpp/JSONInterface/JsonCreateTransaction.cpp @@ -121,8 +121,12 @@ Poco::JSON::Object* JsonCreateTransaction::transfer(Poco::Dynamic::Var params) result = stateError("user not in group", "receiver user isn't in target group"); } } + auto sender_user = mSession->getNewUser(); + if (sender_user->getGradidoKeyPair()->isTheSame(*target_pubkey)) { + result = stateError("sender and receiver are the same"); + } if (!result) { - auto transaction = model::gradido::Transaction::createTransfer(mSession->getNewUser(), target_pubkey, mTargetGroup, amount, mMemo, mBlockchainType); + auto transaction = model::gradido::Transaction::createTransfer(sender_user, target_pubkey, mTargetGroup, amount, mMemo, mBlockchainType); if (mAutoSign) { Poco::JSON::Array errors; From b10886a8d359c1fd2b701722113674705c40d440 Mon Sep 17 00:00:00 2001 From: Dario Rekowski on RockPI Date: Wed, 5 May 2021 15:30:24 +0000 Subject: [PATCH 08/17] move gradido to float into view element --- .../src/Controller/AppRequestsController.php | 40 +++++++++++++------ .../src/Model/Entity/StateBalance.php | 7 +--- .../src/Model/Table/StateUsersTable.php | 4 +- .../src/Model/Table/TransactionsTable.php | 8 ++-- .../src/Template/AppRequests/get_balance.ctp | 11 +++++ .../AppRequests/list_transactions.ctp | 17 ++++++++ .../src/Template/Element/centToFloat.ctp | 15 +++++++ 7 files changed, 78 insertions(+), 24 deletions(-) create mode 100644 community_server/src/Template/AppRequests/get_balance.ctp create mode 100644 community_server/src/Template/AppRequests/list_transactions.ctp create mode 100644 community_server/src/Template/Element/centToFloat.ctp diff --git a/community_server/src/Controller/AppRequestsController.php b/community_server/src/Controller/AppRequestsController.php index 17105e2b9..948d09350 100644 --- a/community_server/src/Controller/AppRequestsController.php +++ b/community_server/src/Controller/AppRequestsController.php @@ -268,7 +268,7 @@ class AppRequestsController extends AppController public function getBalance($session_id = 0) { - + $this->viewBuilder()->setLayout('ajax'); $login_result = $this->requestLogin($session_id, false); if($login_result !== true) { return $this->returnJson($login_result); @@ -284,12 +284,13 @@ class AppRequestsController extends AppController return $this->returnJson(['state' => 'success', 'balance' => 0]); } $now = new FrozenTime(); - return $this->returnJson([ + $body = [ 'state' => 'success', - 'balance' => $state_balance->amount_float, + 'balance' => $state_balance->amount, 'decay' => $state_balance->partDecay($now), 'decay_date' => $now - ]); + ]; + $this->set('body', $body); } public function listTransactions($page = 1, $count = 25, $orderDirection = 'ASC', $session_id = 0) @@ -337,14 +338,29 @@ class AppRequestsController extends AppController $transactions = array_reverse($transactions); } } - return $this->returnJson([ - 'state' => 'success', - 'transactions' => $transactions, - 'transactionExecutingCount' => $session->read('Transactions.executing'), - 'count' => count($transactions), - 'gdtSum' => floatval($gdtSum) / 100.0, - 'timeUsed' => microtime(true) - $startTime - ]); + + $state_balance = $stateBalancesTable->find()->where(['state_user_id' => $user['id']])->first(); + + $body = [ + 'state' => 'success', + 'transactions' => $transactions, + 'transactionExecutingCount' => $session->read('Transactions.executing'), + 'count' => count($transactions), + 'gdtSum' => $gdtSum, + 'timeUsed' => microtime(true) - $startTime + ]; + $now = new FrozenTime(); + $body['decay_date'] = $now; + + if(!$state_balance) { + $body['balance'] = 0; + $body['decay'] = 0; + } else { + $body['balance'] = $state_balance->amount; + $body['decay'] = $state_balance->partDecay($now); + } + + $this->set('body', $body); } private function acquireAccessToken($session_id) diff --git a/community_server/src/Model/Entity/StateBalance.php b/community_server/src/Model/Entity/StateBalance.php index 4303ba1ac..7d595653e 100644 --- a/community_server/src/Model/Entity/StateBalance.php +++ b/community_server/src/Model/Entity/StateBalance.php @@ -68,12 +68,7 @@ class StateBalance extends Entity return intval($this->amount * pow(0.99999997802044727, $decay_duration)); } - - protected function _getAmountFloat() - { - return Number::format(floatval($this->amount) / 10000.0, ['precision' => 2]); - } - + public function partDecay($target_date) { $decay_duration = intval($this->convertToTimestamp($target_date) - $this->convertToTimestamp($this->record_date)); diff --git a/community_server/src/Model/Table/StateUsersTable.php b/community_server/src/Model/Table/StateUsersTable.php index f36f84d82..5b01609f3 100644 --- a/community_server/src/Model/Table/StateUsersTable.php +++ b/community_server/src/Model/Table/StateUsersTable.php @@ -122,9 +122,9 @@ class StateUsersTable extends Table // exchange back $involvedUserIds = array_flip($involvedUser_temp); $involvedUser = $this->find('all', [ - 'contain' => false, + 'contain' => [], 'where' => ['id IN' => $involvedUserIds], - 'fields' => ['id', 'first_name', 'last_name', 'email'] + 'fields' => ['id', 'first_name', 'last_name', 'email'], ]); //var_dump($involvedUser->toArray()); $involvedUserIndices = []; diff --git a/community_server/src/Model/Table/TransactionsTable.php b/community_server/src/Model/Table/TransactionsTable.php index 6cd715874..c6d3477d3 100644 --- a/community_server/src/Model/Table/TransactionsTable.php +++ b/community_server/src/Model/Table/TransactionsTable.php @@ -188,7 +188,7 @@ class TransactionsTable extends Table //echo "prev balance: " . $prev->balance . ", diff_amount: $diff_amount, summe: " . (-intval($prev->balance - $diff_amount)) . "
"; $final_transactions[] = [ 'type' => 'decay', - 'balance' => Number::format(floatval(-intval($prev->balance - $diff_amount)) / 10000.0, ['precision' => 2]), + 'balance' => floatval(-intval($prev->balance - $diff_amount)), 'decay_duration' => $interval->format('%a days, %H hours, %I minutes, %S seconds'), 'memo' => '' ]; @@ -212,7 +212,7 @@ class TransactionsTable extends Table 'type' => 'creation', 'transaction_id' => $transaction->id, 'date' => $creation->target_date, - 'balance' => $creation->amount_float, + 'balance' => $creation->amount, 'memo' => $transaction->memo ]; } else if($su_transaction->transaction_type_id == 2) { // transfer or send coins @@ -245,7 +245,7 @@ class TransactionsTable extends Table 'type' => $type, 'transaction_id' => $sendCoins->transaction_id, 'date' => $transaction->received, - 'balance' => $sendCoins->amount_float, + 'balance' => $sendCoins->amount, 'memo' => $transaction->memo, 'pubkey' => $other_user_public ]; @@ -256,7 +256,7 @@ class TransactionsTable extends Table $state_balance->record_date = $su_transaction->balance_date; $final_transactions[] = [ 'type' => 'decay', - 'balance' => Number::format(floatval(-intval($su_transaction->balance - $state_balance->decay)) / 10000.0, ['precision' => 2]), + 'balance' => floatval(-intval($su_transaction->balance - $state_balance->decay)), 'decay_duration' => $su_transaction->balance_date->timeAgoInWords(), 'memo' => '' ]; diff --git a/community_server/src/Template/AppRequests/get_balance.ctp b/community_server/src/Template/AppRequests/get_balance.ctp new file mode 100644 index 000000000..618ec4c2e --- /dev/null +++ b/community_server/src/Template/AppRequests/get_balance.ctp @@ -0,0 +1,11 @@ +element('centToFloat', ['cent' => $body['balance'], 'precision' => 4]); +$body['decay'] = $this->element('centToFloat', ['cent' => $body['decay'], 'precision' => 4]); +?> \ No newline at end of file diff --git a/community_server/src/Template/AppRequests/list_transactions.ctp b/community_server/src/Template/AppRequests/list_transactions.ctp new file mode 100644 index 000000000..f829b5f16 --- /dev/null +++ b/community_server/src/Template/AppRequests/list_transactions.ctp @@ -0,0 +1,17 @@ +element('centToFloat', ['cent' => $body['balance'], 'precision' => 4]); +$body['decay'] = $this->element('centToFloat', ['cent' => $body['decay'], 'precision' => 4]); +$body['gdtSum'] = $this->element('centToFloat', ['cent' => $body['gdtSum'], 'precision' => 2]); + +foreach($body['transactions'] as $i => $transaction) { + $body['transactions'][$i]['balance'] = $this->element('centToFloat', ['cent' => $transaction['balance'], 'precision' => 4]); +} + +?> \ No newline at end of file diff --git a/community_server/src/Template/Element/centToFloat.ctp b/community_server/src/Template/Element/centToFloat.ctp new file mode 100644 index 000000000..40e3c4754 --- /dev/null +++ b/community_server/src/Template/Element/centToFloat.ctp @@ -0,0 +1,15 @@ + 0) { + $transformAmount = floor($cent / pow(10, $cut_places)); +} +echo $transformAmount / pow(10, $precision - $cut_places); + From 4e7c1fa490eae8fbd44d1c34bc3f1a0f144d0702 Mon Sep 17 00:00:00 2001 From: Dario Rekowski on RockPI Date: Wed, 5 May 2021 15:39:09 +0000 Subject: [PATCH 09/17] layout for listTransactions --- community_server/src/Controller/AppRequestsController.php | 1 + 1 file changed, 1 insertion(+) diff --git a/community_server/src/Controller/AppRequestsController.php b/community_server/src/Controller/AppRequestsController.php index 948d09350..e556a6289 100644 --- a/community_server/src/Controller/AppRequestsController.php +++ b/community_server/src/Controller/AppRequestsController.php @@ -295,6 +295,7 @@ class AppRequestsController extends AppController public function listTransactions($page = 1, $count = 25, $orderDirection = 'ASC', $session_id = 0) { + $this->viewBuilder()->setLayout('ajax'); $startTime = microtime(true); $login_result = $this->requestLogin($session_id, false); if($login_result !== true) { From db33e2a2df0cadc34b2ef8203a141362f3b2ca0f Mon Sep 17 00:00:00 2001 From: Dario Rekowski on RockPI Date: Wed, 5 May 2021 16:24:55 +0000 Subject: [PATCH 10/17] expect gradido now as decimal --- community_server/src/Controller/AppRequestsController.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/community_server/src/Controller/AppRequestsController.php b/community_server/src/Controller/AppRequestsController.php index e556a6289..f604db2c2 100644 --- a/community_server/src/Controller/AppRequestsController.php +++ b/community_server/src/Controller/AppRequestsController.php @@ -22,6 +22,7 @@ class AppRequestsController extends AppController { parent::initialize(); $this->loadComponent('JsonRequestClient'); + $this->loadComponent('GradidoNumber'); //$this->loadComponent('JsonRpcRequestClient'); //$this->Auth->allow(['add', 'edit']); $this->Auth->allow(['index', 'sendCoins', 'createCoins', 'getBalance', 'listTransactions']); @@ -118,6 +119,7 @@ class AppRequestsController extends AppController if(intval($param['amount']) <= 0) { return ['state' => 'error', 'msg' => 'amount is invalid', 'details' => $param['amount']]; } + $param['amount'] = $this->GradidoNumber->parseInputNumberToCentNumber($param['amount']); if(isset($data->memo)) { $param['memo'] = $data->memo; From 9ef2c82bbcd2d2186397183660168255f40396ca Mon Sep 17 00:00:00 2001 From: Dario Rekowski on RockPI Date: Wed, 5 May 2021 16:48:57 +0000 Subject: [PATCH 11/17] test for float instead of int --- community_server/src/Controller/AppRequestsController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/community_server/src/Controller/AppRequestsController.php b/community_server/src/Controller/AppRequestsController.php index f604db2c2..3b1ea85c2 100644 --- a/community_server/src/Controller/AppRequestsController.php +++ b/community_server/src/Controller/AppRequestsController.php @@ -116,7 +116,7 @@ class AppRequestsController extends AppController return $required_fields; } - if(intval($param['amount']) <= 0) { + if(floatval($param['amount']) <= 0.0) { return ['state' => 'error', 'msg' => 'amount is invalid', 'details' => $param['amount']]; } $param['amount'] = $this->GradidoNumber->parseInputNumberToCentNumber($param['amount']); From 851c7cad064d9c1a4c543be2576961311a76ca38 Mon Sep 17 00:00:00 2001 From: Dario Rekowski on RockPI Date: Wed, 5 May 2021 18:57:26 +0000 Subject: [PATCH 12/17] remove minus from decay --- community_server/src/Model/Table/TransactionsTable.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/community_server/src/Model/Table/TransactionsTable.php b/community_server/src/Model/Table/TransactionsTable.php index c6d3477d3..893482e3f 100644 --- a/community_server/src/Model/Table/TransactionsTable.php +++ b/community_server/src/Model/Table/TransactionsTable.php @@ -188,7 +188,7 @@ class TransactionsTable extends Table //echo "prev balance: " . $prev->balance . ", diff_amount: $diff_amount, summe: " . (-intval($prev->balance - $diff_amount)) . "
"; $final_transactions[] = [ 'type' => 'decay', - 'balance' => floatval(-intval($prev->balance - $diff_amount)), + 'balance' => floatval(intval($prev->balance - $diff_amount)), 'decay_duration' => $interval->format('%a days, %H hours, %I minutes, %S seconds'), 'memo' => '' ]; @@ -256,7 +256,7 @@ class TransactionsTable extends Table $state_balance->record_date = $su_transaction->balance_date; $final_transactions[] = [ 'type' => 'decay', - 'balance' => floatval(-intval($su_transaction->balance - $state_balance->decay)), + 'balance' => floatval(intval($su_transaction->balance - $state_balance->decay)), 'decay_duration' => $su_transaction->balance_date->timeAgoInWords(), 'memo' => '' ]; From 7c63d8b1495ff11117c420a314c89643513cce47 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Thu, 6 May 2021 12:02:22 +0200 Subject: [PATCH 13/17] Update community_server/src/Controller/AppRequestsController.php you are right. Co-authored-by: Ulf Gebhardt --- community_server/src/Controller/AppRequestsController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/community_server/src/Controller/AppRequestsController.php b/community_server/src/Controller/AppRequestsController.php index 3b1ea85c2..1993e3559 100644 --- a/community_server/src/Controller/AppRequestsController.php +++ b/community_server/src/Controller/AppRequestsController.php @@ -356,8 +356,8 @@ class AppRequestsController extends AppController $body['decay_date'] = $now; if(!$state_balance) { - $body['balance'] = 0; - $body['decay'] = 0; + $body['balance'] = 0.0; + $body['decay'] = 0.0; } else { $body['balance'] = $state_balance->amount; $body['decay'] = $state_balance->partDecay($now); From 7754fa01fbd01d67f8b7a0209e3064d3d47a0ca7 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Thu, 6 May 2021 12:17:02 +0200 Subject: [PATCH 14/17] Update centToFloat.ctp An additional security patch. --- community_server/src/Template/Element/centToFloat.ctp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/community_server/src/Template/Element/centToFloat.ctp b/community_server/src/Template/Element/centToFloat.ctp index 40e3c4754..2fade18b2 100644 --- a/community_server/src/Template/Element/centToFloat.ctp +++ b/community_server/src/Template/Element/centToFloat.ctp @@ -11,5 +11,8 @@ $transformAmount = $cent; if($cut_places > 0) { $transformAmount = floor($cent / pow(10, $cut_places)); } +if($cut_places < 0) { + $cut_places = 0; +} echo $transformAmount / pow(10, $precision - $cut_places); From 35160c7d86f2b9e227c1fde939a1b57a36b18561 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Thu, 6 May 2021 12:19:49 +0200 Subject: [PATCH 15/17] Update docu/community-server.api.md Co-authored-by: Ulf Gebhardt --- docu/community-server.api.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docu/community-server.api.md b/docu/community-server.api.md index 20a15014d..9354bf232 100644 --- a/docu/community-server.api.md +++ b/docu/community-server.api.md @@ -65,7 +65,7 @@ Assuming: session is valid "type": "send", "transaction_id": 2, "date": "2021-02-19T13:25:36+00:00", - "balance": 192, + "balance": 192.0, "memo": "a piece of cake :)", "pubkey": "038a6f93270dc57b91d76bf110ad3863fcb7d1b08e7692e793fcdb4467e5b6a7" } @@ -245,4 +245,3 @@ Without auto-sign the transaction is pending on the login-server and waits for t // TODO Is this in line with our usability goals? // TODO Should this not be handled client side? - From 449018a3a340d0b88565fdfabb3c00e24128d0ea Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 6 May 2021 14:43:27 +0200 Subject: [PATCH 16/17] decay is the balance shown, max 5 transactions in overview --- frontend/src/views/Layout/DashboardLayout_gdd.vue | 14 ++++---------- frontend/src/views/Pages/AccountOverview.vue | 1 + .../src/views/Pages/AccountOverview/GddSend.vue | 2 +- .../src/views/Pages/AccountOverview/GddStatus.vue | 2 +- .../src/views/Pages/AccountOverview/GddTable.vue | 6 +++--- 5 files changed, 10 insertions(+), 15 deletions(-) diff --git a/frontend/src/views/Layout/DashboardLayout_gdd.vue b/frontend/src/views/Layout/DashboardLayout_gdd.vue index 5f0f363f6..41e2eacc5 100755 --- a/frontend/src/views/Layout/DashboardLayout_gdd.vue +++ b/frontend/src/views/Layout/DashboardLayout_gdd.vue @@ -79,6 +79,7 @@ export default { balance: 0, GdtBalance: 0, transactions: [], + bookedBalance: 0, } }, methods: { @@ -94,19 +95,13 @@ export default { this.$store.dispatch('logout') this.$router.push('/login') }, - async loadBalance() { - const result = await communityAPI.balance(this.$store.state.session_id) - if (result.success) { - this.balance = result.result.data.balance // / 10000 - } else { - // what to do when loading balance fails? - } - }, async updateTransactions() { const result = await communityAPI.transactions(this.$store.state.session_id) if (result.success) { - this.GdtBalance = result.result.data.gdtSum // / 10000 + this.GdtBalance = Number(result.result.data.gdtSum) this.transactions = result.result.data.transactions + this.balance = Number(result.result.data.decay) + this.bookedBalance = Number(result.result.data.balance) } else { // what to do when loading balance fails? } @@ -119,7 +114,6 @@ export default { this.initScrollbar() }, created() { - this.loadBalance() this.updateTransactions() }, } diff --git a/frontend/src/views/Pages/AccountOverview.vue b/frontend/src/views/Pages/AccountOverview.vue index dad678ca8..a9bc7852a 100644 --- a/frontend/src/views/Pages/AccountOverview.vue +++ b/frontend/src/views/Pages/AccountOverview.vue @@ -14,6 +14,7 @@ diff --git a/frontend/src/views/Pages/AccountOverview/GddSend.vue b/frontend/src/views/Pages/AccountOverview/GddSend.vue index fdfe2e294..7337865b6 100644 --- a/frontend/src/views/Pages/AccountOverview/GddSend.vue +++ b/frontend/src/views/Pages/AccountOverview/GddSend.vue @@ -255,7 +255,7 @@ export default { this.$store.state.session_id, this.ajaxCreateData.email, // better to send the user's input here? - this.ajaxCreateData.amount * 10000, + this.ajaxCreateData.amount, this.ajaxCreateData.memo, this.ajaxCreateData.target_date, ) diff --git a/frontend/src/views/Pages/AccountOverview/GddStatus.vue b/frontend/src/views/Pages/AccountOverview/GddStatus.vue index d8fa1939f..96267e335 100644 --- a/frontend/src/views/Pages/AccountOverview/GddStatus.vue +++ b/frontend/src/views/Pages/AccountOverview/GddStatus.vue @@ -1,6 +1,6 @@