From 8b466fea2db2e2c89832af20e45fbca3f14ad36b Mon Sep 17 00:00:00 2001 From: Dario Rekowski on RockPI Date: Mon, 28 Jun 2021 09:10:48 +0000 Subject: [PATCH 1/9] fix bug with decay --- community_server/src/Model/Table/TransactionsTable.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/community_server/src/Model/Table/TransactionsTable.php b/community_server/src/Model/Table/TransactionsTable.php index 301e9b70b..223c67d54 100644 --- a/community_server/src/Model/Table/TransactionsTable.php +++ b/community_server/src/Model/Table/TransactionsTable.php @@ -194,7 +194,7 @@ class TransactionsTable extends Table if($balance > 100) { - $final_transactions['decay'] = [ + $final_transaction['decay'] = [ 'balance' => $balance, 'decay_duration' => $calculated_decay['interval']->format('%a days, %H hours, %I minutes, %S seconds') ]; From 257b1af23f928814b5735d09a25275cf17d347b0 Mon Sep 17 00:00:00 2001 From: Dario Rekowski on RockPI Date: Mon, 28 Jun 2021 09:27:34 +0000 Subject: [PATCH 2/9] update tests to contain decay --- .../Fixture/StateUserTransactionsFixture.php | 12 ++--- .../Fixture/TransactionSendCoinsFixture.php | 6 +-- .../Fixture/TransactionSignaturesFixture.php | 6 +-- .../tests/Fixture/TransactionsFixture.php | 7 +-- .../Controller/AppRequestControllerTest.php | 54 ++++++++++++------- 5 files changed, 52 insertions(+), 33 deletions(-) diff --git a/community_server/tests/Fixture/StateUserTransactionsFixture.php b/community_server/tests/Fixture/StateUserTransactionsFixture.php index 37a132eb5..605e10e5b 100644 --- a/community_server/tests/Fixture/StateUserTransactionsFixture.php +++ b/community_server/tests/Fixture/StateUserTransactionsFixture.php @@ -46,12 +46,12 @@ class StateUserTransactionsFixture extends BaseTestFixture [8, 4, 4, 2, 0, '2021-04-14 00:00:00'], [23, 1, 5, 2, 0, '2021-04-14 09:01:07'], [24, 4, 5, 2, 0, '2021-04-14 09:01:07'], - [25, 4, 6, 2, 0, '2021-04-14 09:02:28'], - [26, 1, 6, 2, 0, '2021-04-14 09:02:28'], - [27, 4, 7, 2, 0, '2021-04-14 09:28:46'], - [28, 1, 7, 2, 0, '2021-04-14 09:28:46'], - [29, 4, 8, 2, 0, '2021-04-14 09:31:28'], - [30, 1, 8, 2, 0, '2021-04-14 09:31:28'] + [25, 4, 7, 2, 0, '2021-04-14 09:02:28'], + [26, 1, 7, 2, 0, '2021-04-14 09:02:28'], + [27, 4, 8, 2, 0, '2021-04-14 09:28:46'], + [28, 1, 8, 2, 0, '2021-04-14 09:28:46'], + [29, 4, 9, 2, 0, '2021-04-14 09:31:28'], + [30, 1, 9, 2, 0, '2021-04-14 09:31:28'] ]; $this->records = $this->sqlEntrysToRecords($sql, $this->fields); parent::init(); diff --git a/community_server/tests/Fixture/TransactionSendCoinsFixture.php b/community_server/tests/Fixture/TransactionSendCoinsFixture.php index a109dfd7f..c186ccf8e 100644 --- a/community_server/tests/Fixture/TransactionSendCoinsFixture.php +++ b/community_server/tests/Fixture/TransactionSendCoinsFixture.php @@ -43,9 +43,9 @@ class TransactionSendCoinsFixture extends BaseTestFixture [2, 3, '0000000000000000000000000000000000000000000000000000000000000000', 1, 'e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2', 4, 1000000, 6254699], [3, 4, '0000000000000000000000000000000000000000000000000000000000000000', 1, 'e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2', 4, 100000, 7027197], [11, 5, '0000000000000000000000000000000000000000000000000000000000000000', 1, 'e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2', 4, 100000, 6922113], - [12, 6, '0000000000000000000000000000000000000000000000000000000000000000', 4, 'f7f4a49a4ac10379f8b9ddcb731c4d9ec495e6edd16075f52672cd25e3179f0f', 1, 100000, 9212951], - [13, 7, '0000000000000000000000000000000000000000000000000000000000000000', 4, 'f7f4a49a4ac10379f8b9ddcb731c4d9ec495e6edd16075f52672cd25e3179f0f', 1, 100000, 9112627], - [14, 8, '0000000000000000000000000000000000000000000000000000000000000000', 4, 'f7f4a49a4ac10379f8b9ddcb731c4d9ec495e6edd16075f52672cd25e3179f0f', 1, 100000, 8912594] + [12, 7, '0000000000000000000000000000000000000000000000000000000000000000', 4, 'f7f4a49a4ac10379f8b9ddcb731c4d9ec495e6edd16075f52672cd25e3179f0f', 1, 100000, 9212951], + [13, 8, '0000000000000000000000000000000000000000000000000000000000000000', 4, 'f7f4a49a4ac10379f8b9ddcb731c4d9ec495e6edd16075f52672cd25e3179f0f', 1, 100000, 9112627], + [14, 9, '0000000000000000000000000000000000000000000000000000000000000000', 4, 'f7f4a49a4ac10379f8b9ddcb731c4d9ec495e6edd16075f52672cd25e3179f0f', 1, 100000, 8912594] ]; $this->records = $this->sqlEntrysToRecords($sql, $this->fields); diff --git a/community_server/tests/Fixture/TransactionSignaturesFixture.php b/community_server/tests/Fixture/TransactionSignaturesFixture.php index 710f055a0..9a5bbecee 100644 --- a/community_server/tests/Fixture/TransactionSignaturesFixture.php +++ b/community_server/tests/Fixture/TransactionSignaturesFixture.php @@ -41,9 +41,9 @@ class TransactionSignaturesFixture extends BaseTestFixture [3, 3, 'c70f124feaaea02194d22a5f597963ed3e430343122a0952877854766fe37a709f92b39510de2aae494ef11abe743cd59f08f971b1e0e36f4c333990453d8b0d', 'f7f4a49a4ac10379f8b9ddcb731c4d9ec495e6edd16075f52672cd25e3179f0f'], [4, 4, 'a65b39e51ab6191c51d5629bbcefd30f85f801efbb14e1c635c519e97abe217a248820fa1fc6aef56227c9d888c1919bc92471d5d7ae3522c9c50fba9f0d8402', 'f7f4a49a4ac10379f8b9ddcb731c4d9ec495e6edd16075f52672cd25e3179f0f'], [5, 5, 'a65b39e51ab6191c51d5629bbcefd30f85f801efbb14e1c635c519e97abe217a248820fa1fc6aef56227c9d888c1919bc92471d5d7ae3522c9c50fba9f0d8402', 'f7f4a49a4ac10379f8b9ddcb731c4d9ec495e6edd16075f52672cd25e3179f0f'], - [6, 6, 'c233726674bff9bfb8ccb98bf358c6bc701825d971ece915d3c3a3de98886d1d13ee2f773cd9fc4ccbe543ac17be0d780ebead23a0dbf4ec814f7bae2efb9c0e', 'e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2'], - [7, 7, '83ab780535883ec53ee76d0f68db0e1596418c9e100c806a4d4655d4dedf589d54a6319a2795dabab301e212b52f0dafb2725b7583447f19e47cb417d188a107', 'e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2'], - [8, 8, '83ab780535883ec53ee76d0f68db0e1596418c9e100c806a4d4655d4dedf589d54a6319a2795dabab301e212b52f0dafb2725b7583447f19e47cb417d188a107', 'e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2'] + [6, 7, 'c233726674bff9bfb8ccb98bf358c6bc701825d971ece915d3c3a3de98886d1d13ee2f773cd9fc4ccbe543ac17be0d780ebead23a0dbf4ec814f7bae2efb9c0e', 'e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2'], + [7, 8, '83ab780535883ec53ee76d0f68db0e1596418c9e100c806a4d4655d4dedf589d54a6319a2795dabab301e212b52f0dafb2725b7583447f19e47cb417d188a107', 'e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2'], + [8, 9, '83ab780535883ec53ee76d0f68db0e1596418c9e100c806a4d4655d4dedf589d54a6319a2795dabab301e212b52f0dafb2725b7583447f19e47cb417d188a107', 'e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2'] ]; $this->records = $this->sqlEntrysToRecords($sql, $this->fields); parent::init(); diff --git a/community_server/tests/Fixture/TransactionsFixture.php b/community_server/tests/Fixture/TransactionsFixture.php index befafc16b..8c38f0657 100644 --- a/community_server/tests/Fixture/TransactionsFixture.php +++ b/community_server/tests/Fixture/TransactionsFixture.php @@ -44,9 +44,10 @@ class TransactionsFixture extends BaseTestFixture [3, NULL, 2, '4e2235f208edaf5cbb285955732022a625cf1e100eb629c56896d2fbfb8b34e800000000000000000000000000000000', 'test', '2021-04-12 00:00:00', 1], [4, NULL, 2, 'fc6e69696beb7c56ad7c511fc3999f954411427bec810184b70c092911deae1900000000000000000000000000000000', 'test time', '2021-04-14 00:00:00', 1], [5, NULL, 2, 'a7149ebc0d6cd8c061906dafe05e13689b51642a41100d0ec7bb6cd2dcafdc1800000000000000000000000000000000', 'test time', '2021-04-14 09:01:07', 1], - [6, NULL, 2, '2e3c3ab3e42c06f2ecb12f61c970712467d8ad9ddfa16fa58dd76492e5924b7d00000000000000000000000000000000', 'test time 3', '2021-04-14 09:02:28', 1], - [7, NULL, 2, 'c2c6354d77ff371daeee25fce9c947748b53d3d6b8398a92bd681923cfd2057100000000000000000000000000000000', 'test login crash', '2021-04-14 09:28:46', 1], - [8, NULL, 2, '5a8cbf1aaac06b00b2951ff39983cb2ca9a1e6710d72c8e5067278dc679a823100000000000000000000000000000000', 'test login crash', '2021-04-14 09:31:28', 1] + [6, NULL, 9, '', '', '2021-04-14 09:02:00', 1], + [7, NULL, 2, '2e3c3ab3e42c06f2ecb12f61c970712467d8ad9ddfa16fa58dd76492e5924b7d00000000000000000000000000000000', 'test time 3', '2021-04-14 09:02:28', 1], + [8, NULL, 2, 'c2c6354d77ff371daeee25fce9c947748b53d3d6b8398a92bd681923cfd2057100000000000000000000000000000000', 'test login crash', '2021-04-14 09:28:46', 1], + [9, NULL, 2, '5a8cbf1aaac06b00b2951ff39983cb2ca9a1e6710d72c8e5067278dc679a823100000000000000000000000000000000', 'test login crash', '2021-04-14 09:31:28', 1] ]; $this->records = $this->sqlEntrysToRecords($sql, $this->fields); parent::init(); diff --git a/community_server/tests/TestCase/Controller/AppRequestControllerTest.php b/community_server/tests/TestCase/Controller/AppRequestControllerTest.php index a374ae878..f5939d2eb 100644 --- a/community_server/tests/TestCase/Controller/AppRequestControllerTest.php +++ b/community_server/tests/TestCase/Controller/AppRequestControllerTest.php @@ -57,8 +57,8 @@ class AppRequestControllerTest extends TestCase $response = $this->getAndParseWithoutCompare('/api/get-balance/' . $session_id); $this->assertEquals('success', $response->state); - $this->assertEquals(9100000, $response->balance); - $this->assertLessThan(9100000, $response->decay); + $this->assertEquals(9099652, $response->balance); + $this->assertLessThan(9099652, $response->decay); } @@ -94,8 +94,8 @@ class AppRequestControllerTest extends TestCase $response = $this->getAndParseWithoutCompare('/api/get-balance/' . $session_id); $this->assertEquals('success', $response->state); - $this->assertEquals(10900000, $response->balance); - $this->assertLessThan(10900000, $response->decay); + $this->assertEquals(10899568, $response->balance); + $this->assertLessThan(10899568, $response->decay); } public function testGetBalanceInvalidSession() @@ -202,7 +202,7 @@ class AppRequestControllerTest extends TestCase "email": "test3.yahoo.com" }, { - "transaction_id": 6, + "transaction_id": 7, "date": "2021-04-14T09:02:28+00:00", "memo": "test time 3", "balance": 100000, @@ -212,9 +212,23 @@ class AppRequestControllerTest extends TestCase "email": "test3.yahoo.com" }, { - "transaction_id": 7, + "transaction_id": 8, "date": "2021-04-14T09:28:46+00:00", "memo": "test login crash", + "decay": { + "balance": 309, + "decay_duration": "0 days, 00 hours, 26 minutes, 18 seconds" + }, + "balance": 100000, + "type": "receive", + "pubkey": "0000000000000000000000000000000000000000000000000000000000000000", + "name": "Samuel Schmied", + "email": "test3.yahoo.com" + }, + { + "transaction_id": 9, + "date": "2021-04-14T09:31:28+00:00", + "memo": "test login crash", "balance": 100000, "type": "receive", "pubkey": "0000000000000000000000000000000000000000000000000000000000000000", @@ -222,23 +236,19 @@ class AppRequestControllerTest extends TestCase "email": "test3.yahoo.com" }, { - "transaction_id": 8, - "date": "2021-04-14T09:31:28+00:00", - "memo": "test login crash", - "balance": 100000, - "type": "receive", - "pubkey": "0000000000000000000000000000000000000000000000000000000000000000", - "name": "Samuel Schmied", - "email": "test3.yahoo.com" + "type": "decay", + "balance": 1207829, + "decay_duration": "on 14.04.21", + "memo": "" } ], "transactionExecutingCount": 0, "count": 7, "gdtSum": 180000, - "timeUsed": 0.7237420082092285, - "decay_date": "2021-06-22T08:54:43+00:00", - "balance": 9100000, - "decay": 9100000 + "timeUsed": 0.35933995246887209, + "decay_date": "2021-06-28T09:17:23+00:00", + "balance": 9099652, + "decay": 7891823 }'; $this->getAndParse('/api/list-transactions/', json_decode($expectedResult, true)); } @@ -276,6 +286,14 @@ class AppRequestControllerTest extends TestCase $expected[$field] = $json->$field; } } + // decay balance variy always + if(isset($expected['transactions'])) { + foreach($expected['transactions'] as $i => $transaction) { + if(isset($transaction['type']) && isset($transaction['balance']) && $transaction['type'] == 'decay') { + $expected['transactions'][$i]['balance'] = $json->transactions[$i]['balance']; + } + } + } $expected = json_encode($expected); } From ee67f60652cbdbde3f481336a8a3c5162665c7c0 Mon Sep 17 00:00:00 2001 From: Dario Rekowski on RockPI Date: Mon, 28 Jun 2021 09:34:44 +0000 Subject: [PATCH 3/9] fix test again --- .../TestCase/Controller/AppRequestControllerTest.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/community_server/tests/TestCase/Controller/AppRequestControllerTest.php b/community_server/tests/TestCase/Controller/AppRequestControllerTest.php index f5939d2eb..d79c14c0f 100644 --- a/community_server/tests/TestCase/Controller/AppRequestControllerTest.php +++ b/community_server/tests/TestCase/Controller/AppRequestControllerTest.php @@ -288,9 +288,14 @@ class AppRequestControllerTest extends TestCase } // decay balance variy always if(isset($expected['transactions'])) { + $dynamic_transaction_fields = ['decay_duration', 'balance']; foreach($expected['transactions'] as $i => $transaction) { - if(isset($transaction['type']) && isset($transaction['balance']) && $transaction['type'] == 'decay') { - $expected['transactions'][$i]['balance'] = $json->transactions[$i]['balance']; + if(isset($transaction['type']) && $transaction['type'] == 'decay') { + foreach($dynamic_transaction_fields as $field) { + if(isset($transaction[$field])) { + $expected['transactions'][$i][$field] = $json->transactions[$i][$field]; + } + } } } } From 08f1aefcf585956fa463ebc47ce361f69d6e73d3 Mon Sep 17 00:00:00 2001 From: Dario Rekowski on RockPI Date: Tue, 29 Jun 2021 08:58:24 +0000 Subject: [PATCH 4/9] return also start_date and end_date timestamp for decay calculation --- .../src/Model/Table/StateBalancesTable.php | 14 ++++++++++++-- .../src/Model/Table/TransactionsTable.php | 9 +++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/community_server/src/Model/Table/StateBalancesTable.php b/community_server/src/Model/Table/StateBalancesTable.php index 25d588f30..ff7a0aca2 100644 --- a/community_server/src/Model/Table/StateBalancesTable.php +++ b/community_server/src/Model/Table/StateBalancesTable.php @@ -98,7 +98,12 @@ class StateBalancesTable extends AppTable // if start date for decay is after enddate, we also just return input if($decayStartDate === null || $decayStartDate >= $endDate) { if($withInterval) { - return ['balance' => $startBalance, 'interval' => new \DateInterval('PT0S')]; + return [ + 'balance' => $startBalance, + 'interval' => new \DateInterval('PT0S'), + 'start_date' => $startDate->getTimestamp(), + 'end_date' => $startDate->getTimestamp() + ]; } else { return $startBalance; } @@ -118,7 +123,12 @@ class StateBalancesTable extends AppTable } $decay = $state_balance->partDecay($endDate); if($withInterval) { - return ['balance' => $decay, 'interval' => $interval]; + return [ + 'balance' => $decay, + 'interval' => $interval, + 'start_date' => $state_balance->record_date->getTimestamp(), + 'end_date' => $endDate->getTimestamp() + ]; } else { return $decay; } diff --git a/community_server/src/Model/Table/TransactionsTable.php b/community_server/src/Model/Table/TransactionsTable.php index 223c67d54..eb04b31fd 100644 --- a/community_server/src/Model/Table/TransactionsTable.php +++ b/community_server/src/Model/Table/TransactionsTable.php @@ -196,7 +196,9 @@ class TransactionsTable extends Table { $final_transaction['decay'] = [ 'balance' => $balance, - 'decay_duration' => $calculated_decay['interval']->format('%a days, %H hours, %I minutes, %S seconds') + 'decay_duration' => $calculated_decay['interval']->format('%a days, %H hours, %I minutes, %S seconds'), + 'decay_start' => $calculated_decay['start_date'], + 'decay_end' => $calculated_decay['end_date'] ]; } } @@ -251,9 +253,10 @@ class TransactionsTable extends Table $final_transactions[] = $final_transaction; if($i == $stateUserTransactionsCount-1 && $decay == true) { + $now = new FrozenTime(); $calculated_decay = $stateBalancesTable->calculateDecay( $su_transaction->balance, - $su_transaction->balance_date, new FrozenTime(), true); + $su_transaction->balance_date, $now, true); $decay_start_date = $stateBalancesTable->getDecayStartDateCached(); $duration = $su_transaction->balance_date->timeAgoInWords(); if($decay_start_date > $su_transaction->balance_date) { @@ -265,6 +268,8 @@ class TransactionsTable extends Table 'type' => 'decay', 'balance' => $balance, 'decay_duration' => $duration, + 'decay_start' => $calculated_decay['start_date'], + 'decay_end' => $calculated_decay['end_date'], 'memo' => '' ]; } From ac3677e9ad8f5d3ed27a8dfc09fd1da464409e15 Mon Sep 17 00:00:00 2001 From: Dario Rekowski on RockPI Date: Tue, 29 Jun 2021 08:58:36 +0000 Subject: [PATCH 5/9] update tests --- .../Controller/AppRequestControllerTest.php | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/community_server/tests/TestCase/Controller/AppRequestControllerTest.php b/community_server/tests/TestCase/Controller/AppRequestControllerTest.php index d79c14c0f..6d179845f 100644 --- a/community_server/tests/TestCase/Controller/AppRequestControllerTest.php +++ b/community_server/tests/TestCase/Controller/AppRequestControllerTest.php @@ -217,7 +217,9 @@ class AppRequestControllerTest extends TestCase "memo": "test login crash", "decay": { "balance": 309, - "decay_duration": "0 days, 00 hours, 26 minutes, 18 seconds" + "decay_duration": "0 days, 00 hours, 26 minutes, 18 seconds", + "decay_start": 1618390948, + "decay_end": 1618392526 }, "balance": 100000, "type": "receive", @@ -237,18 +239,20 @@ class AppRequestControllerTest extends TestCase }, { "type": "decay", - "balance": 1207829, + "balance": 1222493, "decay_duration": "on 14.04.21", + "decay_start": 1618392688, + "decay_end": 1624956464, "memo": "" } ], "transactionExecutingCount": 0, "count": 7, "gdtSum": 180000, - "timeUsed": 0.35933995246887209, - "decay_date": "2021-06-28T09:17:23+00:00", + "timeUsed": 0.6441609859466553, + "decay_date": "2021-06-29T08:47:44+00:00", "balance": 9099652, - "decay": 7891823 + "decay": 7877159 }'; $this->getAndParse('/api/list-transactions/', json_decode($expectedResult, true)); } @@ -288,7 +292,7 @@ class AppRequestControllerTest extends TestCase } // decay balance variy always if(isset($expected['transactions'])) { - $dynamic_transaction_fields = ['decay_duration', 'balance']; + $dynamic_transaction_fields = ['decay_duration', 'balance', 'decay_end']; foreach($expected['transactions'] as $i => $transaction) { if(isset($transaction['type']) && $transaction['type'] == 'decay') { foreach($dynamic_transaction_fields as $field) { From b9be07d87f31fd98b060745195f19bdf6bc8aeac Mon Sep 17 00:00:00 2001 From: Dario Rekowski on RockPI Date: Tue, 29 Jun 2021 09:01:09 +0000 Subject: [PATCH 6/9] update doc --- docu/community-server.api.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/docu/community-server.api.md b/docu/community-server.api.md index 11556513b..64127dd81 100644 --- a/docu/community-server.api.md +++ b/docu/community-server.api.md @@ -63,6 +63,8 @@ Assuming: session is valid "type": "decay", "balance": "14.74", "decay_duration": "4 days, 2 hours ago", + "decay_start": 1618390948, + "decay_end": 1618392526, "memo": "" }, { @@ -73,7 +75,13 @@ Assuming: session is valid "date": "2021-02-19T13:25:36+00:00", "balance": 192.0, "memo": "a piece of cake :)", - "pubkey": "038a6f93270dc57b91d76bf110ad3863fcb7d1b08e7692e793fcdb4467e5b6a7" + "pubkey": "038a6f93270dc57b91d76bf110ad3863fcb7d1b08e7692e793fcdb4467e5b6a7", + "decay": { + "balance": 309, + "decay_duration": "0 days, 00 hours, 26 minutes, 18 seconds", + "decay_start": 1618390948, + "decay_end": 1618392526 + }, }, { "name": "Gradido Akademie", From 999a49c41fe3ef1e35bbce14ca7688b8dc9e6611 Mon Sep 17 00:00:00 2001 From: Dario Rekowski on RockPI Date: Tue, 29 Jun 2021 09:18:56 +0000 Subject: [PATCH 7/9] again remove check for decay more than 100 (lost update?) --- 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 eb04b31fd..61e14d231 100644 --- a/community_server/src/Model/Table/TransactionsTable.php +++ b/community_server/src/Model/Table/TransactionsTable.php @@ -192,7 +192,7 @@ class TransactionsTable extends Table $calculated_decay = $stateBalancesTable->calculateDecay($prev->balance, $prev->balance_date, $current->balance_date, true); $balance = floatval($prev->balance - $calculated_decay['balance']); - if($balance > 100) + if($balance) { $final_transaction['decay'] = [ 'balance' => $balance, @@ -263,7 +263,7 @@ class TransactionsTable extends Table $duration = $decay_start_date->timeAgoInWords(); } $balance = floatval($su_transaction->balance - $calculated_decay['balance']); - if($balance > 100) { + if($balance) { $final_transactions[] = [ 'type' => 'decay', 'balance' => $balance, From 4a68dd3c7af9100ad1a9fabda171fc5477d918a8 Mon Sep 17 00:00:00 2001 From: Dario Rekowski on RockPI Date: Tue, 29 Jun 2021 09:56:23 +0000 Subject: [PATCH 8/9] decay only with first page, ensure that the limit is kept --- .../src/Controller/AppRequestsController.php | 15 +++++++++++++-- .../src/Model/Table/TransactionsTable.php | 4 ++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/community_server/src/Controller/AppRequestsController.php b/community_server/src/Controller/AppRequestsController.php index ff3314e94..15c68cece 100644 --- a/community_server/src/Controller/AppRequestsController.php +++ b/community_server/src/Controller/AppRequestsController.php @@ -333,16 +333,27 @@ class AppRequestsController extends AppController $this->addAdminError('StateBalancesController', 'overview', $gdtEntries, $user['id'] ? $user['id'] : 0); } + $limit = $count; + $offset = 0; + if($page == 1) { + $limit--; + } else { + $offset = (( $page - 1 ) * $count) - 1; + } $stateUserTransactionsQuery = $stateUserTransactionsTable ->find() ->where(['state_user_id' => $user['id']]) ->order(['balance_date' => $orderDirection]) ->contain([]) - ->limit($count) - ->page($page) + ->limit($limit) + //->page($page) + ->offset($offset) ; $decay = true; + if($page > 1) { + $decay = false; + } $transactions = []; $transactions_from_db = $stateUserTransactionsQuery->toArray(); diff --git a/community_server/src/Model/Table/TransactionsTable.php b/community_server/src/Model/Table/TransactionsTable.php index 61e14d231..8fcd81489 100644 --- a/community_server/src/Model/Table/TransactionsTable.php +++ b/community_server/src/Model/Table/TransactionsTable.php @@ -185,7 +185,7 @@ class TransactionsTable extends Table if($i > 0 ) { $prev = $stateUserTransactions[$i-1]; } - if($prev && $decay == true) + if($prev) { if($prev->balance > 0) { $current = $su_transaction; @@ -252,7 +252,7 @@ class TransactionsTable extends Table $final_transactions[] = $final_transaction; - if($i == $stateUserTransactionsCount-1 && $decay == true) { + if($i == $stateUserTransactionsCount-1 && $decay) { $now = new FrozenTime(); $calculated_decay = $stateBalancesTable->calculateDecay( $su_transaction->balance, From 221f9ec2ee2d1252f14f285b006c8da66f1ae695 Mon Sep 17 00:00:00 2001 From: Dario Rekowski on RockPI Date: Tue, 29 Jun 2021 09:56:32 +0000 Subject: [PATCH 9/9] update test --- .../TestCase/Controller/AppRequestControllerTest.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/community_server/tests/TestCase/Controller/AppRequestControllerTest.php b/community_server/tests/TestCase/Controller/AppRequestControllerTest.php index 6d179845f..5aeb64d8b 100644 --- a/community_server/tests/TestCase/Controller/AppRequestControllerTest.php +++ b/community_server/tests/TestCase/Controller/AppRequestControllerTest.php @@ -205,6 +205,12 @@ class AppRequestControllerTest extends TestCase "transaction_id": 7, "date": "2021-04-14T09:02:28+00:00", "memo": "test time 3", + "decay": { + "balance": 6, + "decay_duration": "0 days, 00 hours, 00 minutes, 28 seconds", + "decay_start": 1618390920, + "decay_end": 1618390948 + }, "balance": 100000, "type": "receive", "pubkey": "0000000000000000000000000000000000000000000000000000000000000000", @@ -231,6 +237,12 @@ class AppRequestControllerTest extends TestCase "transaction_id": 9, "date": "2021-04-14T09:31:28+00:00", "memo": "test login crash", + "decay": { + "balance": 33, + "decay_duration": "0 days, 00 hours, 02 minutes, 42 seconds", + "decay_start": 1618392526, + "decay_end": 1618392688 + }, "balance": 100000, "type": "receive", "pubkey": "0000000000000000000000000000000000000000000000000000000000000000",