diff --git a/src/Controller/JsonRequestHandlerController.php b/src/Controller/JsonRequestHandlerController.php index 716c8a78f..9ea35d2ad 100644 --- a/src/Controller/JsonRequestHandlerController.php +++ b/src/Controller/JsonRequestHandlerController.php @@ -93,9 +93,13 @@ class JsonRequestHandlerController extends AppController { if(!$last_transaction_query->isEmpty()) { $last_transaction_id = $last_transaction_query->first()->id; } + $last_known_sequence_number = $last_transaction_id; + if($last_transaction_query->count() < $last_transaction_id) { $last_transaction_id = $last_transaction_query->count(); } + $last_transaction_id = 0; + $group_alias = Configure::read('GroupAlias'); $result = (array)$this->JsonRpcRequestClient->request('getTransactions', ['groupAlias' => $group_alias, 'lastKnownSequenceNumber' => $last_transaction_id]); @@ -239,7 +243,9 @@ class JsonRequestHandlerController extends AppController { $temp_record = new Record; $errors = []; foreach($result['blocks'] as $_record) { + if(is_string($_record)) continue; $parse_result = $temp_record->parseRecord($_record); + if($parse_result == true) { $sequenceNumber = $temp_record->getSequenceNumber(); if($part_count == -1) { @@ -248,10 +254,13 @@ class JsonRequestHandlerController extends AppController { $part_count--; if($part_count == 0) { - $finalize_result = $temp_record->finalize(); - if($finalize_result !== true) { - $errors[] = ['msg' => 'error in finalize', 'record' => $_record, 'details' => $finalize_result, 'sequenceNumber' => $sequenceNumber]; + if($sequenceNumber > $last_known_sequence_number) { + $finalize_result = $temp_record->finalize(); + if($finalize_result !== true) { + $errors[] = ['msg' => 'error in finalize', 'record' => $_record, 'details' => $finalize_result, 'sequenceNumber' => $sequenceNumber]; + } } + $temp_record = new Record; $part_count = -1; } diff --git a/src/Controller/TransactionSendCoinsController.php b/src/Controller/TransactionSendCoinsController.php index 39d1eea1b..12aa3e69a 100644 --- a/src/Controller/TransactionSendCoinsController.php +++ b/src/Controller/TransactionSendCoinsController.php @@ -57,8 +57,9 @@ class TransactionSendCoinsController extends AppController 'contain' => ['Transactions', 'StateUsers', 'ReceiverUsers'] ]; $transactionSendCoins = $this->paginate($this->TransactionSendCoins); + $simple = $this->TransactionSendCoins->find('all'); - $this->set(compact('transactionSendCoins')); + $this->set(compact('transactionSendCoins', 'simple')); } /** diff --git a/src/Model/Transactions/Record.php b/src/Model/Transactions/Record.php index 5327ffc9d..506846339 100644 --- a/src/Model/Transactions/Record.php +++ b/src/Model/Transactions/Record.php @@ -63,24 +63,6 @@ class GradidoModifieUserBalance { $userPublicBin = hex2bin($userPublicKey); $stateUsersTable = TableRegistry::getTableLocator()->get('StateUsers'); - - // hack for pauls public key format with many FF instead of the real values - $stateUsers = $stateUsersTable->find('all')->select(['id', 'public_key']); - $debug_user_publics = []; - foreach($stateUsers as $user) { - $user_public = stream_get_contents($user->public_key); - $debug_user_publics[] = bin2hex($user_public); - if(($user_public & $userPublicBin) == $user_public) { - array_push($this->state_users, (int)$user->id); - return $user->id; - } - } - return [ - 'state' => 'error', - 'msg' => '[GradidoModifieUserBalance::getUserId] couldn\'t find user via public key binary &', - 'details' => ['input public' => $userPublicKey, 'user publics' => $debug_user_publics] - ]; - // hack end $stateUser = $stateUsersTable->find('all')->where(['public_key' => hex2bin($userPublicKey)]); if($stateUser->isEmpty()) { @@ -342,7 +324,7 @@ class GradidoTransfer extends GradidoModifieUserBalance } } if(is_int($receiver_id) && $receiver_id > 0) { - $this->state_users[] = $receiver_id; + $transferEntity->receiver_user_id = $receiver_id; $balance_result = $this->updateBalance($this->receiver_new_balance, $received, $receiver_id); if(is_array($balance_result)) { return $balance_result; @@ -397,7 +379,6 @@ class Record case 'BLANK': return false; } - return false; } /*! diff --git a/src/Template/TransactionCreations/index.ctp b/src/Template/TransactionCreations/index.ctp index d9d156239..4eb7b2471 100644 --- a/src/Template/TransactionCreations/index.ctp +++ b/src/Template/TransactionCreations/index.ctp @@ -16,14 +16,15 @@

- +
+ + - @@ -33,6 +34,8 @@ + +
Paginator->sort('id') ?> Paginator->sort('transaction_id') ?> Paginator->sort('state_user_id') ?>Paginator->sort('target_date') ?>Paginator->sort('received') ?> Paginator->sort('amount') ?>Paginator->sort('ident_hash ') ?>
Number->format($transactionCreation->id) ?> has('transaction') ? $this->Html->link($transactionCreation->transaction->id, ['controller' => 'Transactions', 'action' => 'view', $transactionCreation->transaction->id]) : '' ?> has('state_user') ? $this->Html->link($transactionCreation->state_user->getEmailWithName(), ['controller' => 'StateUsers', 'action' => 'view', $transactionCreation->state_user->id]) : '' ?>target_date) ?>transaction->received) ?> element('printGradido', ['number' => $transactionCreation->amount]) ?> ident_hash) ?> diff --git a/src/Template/TransactionSendCoins/index.ctp b/src/Template/TransactionSendCoins/index.ctp index a14083c61..c98f675a5 100644 --- a/src/Template/TransactionSendCoins/index.ctp +++ b/src/Template/TransactionSendCoins/index.ctp @@ -4,8 +4,7 @@ * @var \App\Model\Entity\TransactionSendCoin[]|\Cake\Collection\CollectionInterface $transactionSendCoins */ ?> -