From 141cd6a112c686e9af0939d8ee523ef49264ff27 Mon Sep 17 00:00:00 2001 From: Dario Rekowski on RockPI Date: Tue, 5 May 2020 07:12:28 +0000 Subject: [PATCH] remove changes from new branch --- .../JsonRequestHandlerController.php | 3 ++ .../TransactionCreationsController.php | 19 +++++++- src/Form/CreationForm.php | 1 + src/Model/Entity/TransactionCreation.php | 3 +- .../Messages/Gradido/TransactionCreation.php | 48 +++++++++++++++++++ .../Transactions/TransactionCreation.php | 31 ++++++++++-- src/Template/StateBalances/overview_gdt.ctp | 4 +- .../TransactionCreations/create_multi.ctp | 13 ++++- src/protobuf | 2 +- 9 files changed, 114 insertions(+), 10 deletions(-) diff --git a/src/Controller/JsonRequestHandlerController.php b/src/Controller/JsonRequestHandlerController.php index aac094a44..89d07a93f 100644 --- a/src/Controller/JsonRequestHandlerController.php +++ b/src/Controller/JsonRequestHandlerController.php @@ -66,12 +66,15 @@ class JsonRequestHandlerController extends AppController { private function putTransaction($transactionBase64) { $transaction = new Transaction($transactionBase64); + //echo "after new transaction
"; if($transaction->hasErrors()) { return $this->returnJson(['state' => 'error', 'msg' => 'error parsing transaction', 'details' => $transaction->getErrors()]); } + //echo "after check on errors
"; if(!$transaction->validate()) { return $this->returnJsonSaveError($transaction, ['state' => 'error', 'msg' => 'error validate transaction', 'details' => $transaction->getErrors()]); } + //echo "after validate
"; if ($transaction->save()) { diff --git a/src/Controller/TransactionCreationsController.php b/src/Controller/TransactionCreationsController.php index cbdb6ab47..910c73fcd 100644 --- a/src/Controller/TransactionCreationsController.php +++ b/src/Controller/TransactionCreationsController.php @@ -7,6 +7,7 @@ use Cake\Routing\Router; //use Cake\I18n\Number; use Cake\Http\Client; use Cake\Core\Configure; +use Cake\I18n\FrozenDate; use Cake\Datasource\ConnectionManager; use App\Form\CreationForm; @@ -262,6 +263,7 @@ class TransactionCreationsController extends AppController // amount $memo = $requestData['memo']; $amountCent = $this->GradidoNumber->parseInputNumberToCentNumber($requestData['amount']); + $targetDate = $requestData['target_date']; $mode = 'next'; if(isset($requestData['add'])) {$mode = 'add'; } @@ -284,10 +286,14 @@ class TransactionCreationsController extends AppController //var_dump($receiverUsers); foreach($receiverUsers as $receiverUser) { $localAmountCent = $amountCent; + $localTargetDate = $targetDate; $id = $receiverUser->id; if($requestData['user_amount'][$id] != '') { $localAmountCent = $this->GradidoNumber->parseInputNumberToCentNumber($requestData['user_amount'][$id]); } + if($requestData['user_target_date'][$id]) { + $localTargetDate = $requestData['user_target_date'][$id]; + } if(isset($pendings[$id])) { $pendings[$id] += $localAmountCent; } else { @@ -295,11 +301,22 @@ class TransactionCreationsController extends AppController } $pubKeyHex = bin2hex(stream_get_contents($receiverUser->public_key)); $identHash = TransactionCreation::DRMakeStringHash($receiverUser->email); + //var_dump($localTargetDate); + //die('a'); + $localTargetDateFrozen = FrozenDate::now(); + $localTargetDateFrozen = $localTargetDateFrozen + ->year($localTargetDate['year']) + ->month($localTargetDate['month']) + ->day($localTargetDate['day']); + echo "input: "; var_dump($localTargetDate);echo "
"; + echo "output: "; var_dump($localTargetDateFrozen); + //die('a'); $builderResult = TransactionCreation::build( $localAmountCent, $memo, $pubKeyHex, - $identHash + $identHash, + $localTargetDateFrozen ); if($builderResult['state'] == 'success') { array_push($transactions, base64_encode($builderResult['transactionBody']->serializeToString())); diff --git a/src/Form/CreationForm.php b/src/Form/CreationForm.php index 6d54817c2..70b4fce40 100644 --- a/src/Form/CreationForm.php +++ b/src/Form/CreationForm.php @@ -15,6 +15,7 @@ class CreationForm extends Form //->addField('receiver_pubkey_hex', ['type' => 'string']) ->addField('receiver', ['type' => 'select']) ->addField('amount', ['type' => 'decimal', 'precision' => 2]) + ->addField('target_date', ['type' => 'date']) ->addField('memo', ['type' =>'text', 'default' => '', 'rows' => 3, 'maxlength' => 150]); } diff --git a/src/Model/Entity/TransactionCreation.php b/src/Model/Entity/TransactionCreation.php index 9d7694de7..36aa7ac2d 100644 --- a/src/Model/Entity/TransactionCreation.php +++ b/src/Model/Entity/TransactionCreation.php @@ -33,6 +33,7 @@ class TransactionCreation extends Entity 'amount' => true, 'ident_hash' => true, 'transaction' => true, - 'state_user' => true + 'state_user' => true, + 'target_date' => true ]; } diff --git a/src/Model/Messages/Gradido/TransactionCreation.php b/src/Model/Messages/Gradido/TransactionCreation.php index 46c5eaa09..1c8f33dba 100644 --- a/src/Model/Messages/Gradido/TransactionCreation.php +++ b/src/Model/Messages/Gradido/TransactionCreation.php @@ -17,13 +17,23 @@ use Google\Protobuf\Internal\GPBUtil; class TransactionCreation extends \Google\Protobuf\Internal\Message { /** + * 40 Byte + * * Generated from protobuf field .model.messages.gradido.ReceiverAmount receiverAmount = 1; */ private $receiverAmount = null; /** + * 4 Byte + * * Generated from protobuf field sint32 ident_hash = 2; */ private $ident_hash = 0; + /** + * 8 Byte + * + * Generated from protobuf field .model.messages.gradido.TimestampSeconds target_date = 3; + */ + private $target_date = null; /** * Constructor. @@ -32,7 +42,11 @@ class TransactionCreation extends \Google\Protobuf\Internal\Message * Optional. Data for populating the Message object. * * @type \Model\Messages\Gradido\ReceiverAmount $receiverAmount + * 40 Byte * @type int $ident_hash + * 4 Byte + * @type \Model\Messages\Gradido\TimestampSeconds $target_date + * 8 Byte * } */ public function __construct($data = NULL) { @@ -41,6 +55,8 @@ class TransactionCreation extends \Google\Protobuf\Internal\Message } /** + * 40 Byte + * * Generated from protobuf field .model.messages.gradido.ReceiverAmount receiverAmount = 1; * @return \Model\Messages\Gradido\ReceiverAmount */ @@ -50,6 +66,8 @@ class TransactionCreation extends \Google\Protobuf\Internal\Message } /** + * 40 Byte + * * Generated from protobuf field .model.messages.gradido.ReceiverAmount receiverAmount = 1; * @param \Model\Messages\Gradido\ReceiverAmount $var * @return $this @@ -63,6 +81,8 @@ class TransactionCreation extends \Google\Protobuf\Internal\Message } /** + * 4 Byte + * * Generated from protobuf field sint32 ident_hash = 2; * @return int */ @@ -72,6 +92,8 @@ class TransactionCreation extends \Google\Protobuf\Internal\Message } /** + * 4 Byte + * * Generated from protobuf field sint32 ident_hash = 2; * @param int $var * @return $this @@ -84,5 +106,31 @@ class TransactionCreation extends \Google\Protobuf\Internal\Message return $this; } + /** + * 8 Byte + * + * Generated from protobuf field .model.messages.gradido.TimestampSeconds target_date = 3; + * @return \Model\Messages\Gradido\TimestampSeconds + */ + public function getTargetDate() + { + return $this->target_date; + } + + /** + * 8 Byte + * + * Generated from protobuf field .model.messages.gradido.TimestampSeconds target_date = 3; + * @param \Model\Messages\Gradido\TimestampSeconds $var + * @return $this + */ + public function setTargetDate($var) + { + GPBUtil::checkMessage($var, \Model\Messages\Gradido\TimestampSeconds::class); + $this->target_date = $var; + + return $this; + } + } diff --git a/src/Model/Transactions/TransactionCreation.php b/src/Model/Transactions/TransactionCreation.php index 6f1445741..af640a95d 100644 --- a/src/Model/Transactions/TransactionCreation.php +++ b/src/Model/Transactions/TransactionCreation.php @@ -8,6 +8,8 @@ use Cake\ORM\TableRegistry; use Cake\Core\Configure; use Cake\Mailer\Email; + + class TransactionCreation extends TransactionBase { private $protoTransactionCreation; @@ -24,7 +26,7 @@ class TransactionCreation extends TransactionBase { return $this->protoTransactionCreation; } - static public function build($amount, $memo, $receiver_public_hex, $ident_hash) + static public function build($amount, $memo, $receiver_public_hex, $ident_hash, $targetDate = null) { $receiver = new \Model\Messages\Gradido\ReceiverAmount(); $receiver->setAmount($amount); @@ -42,10 +44,21 @@ class TransactionCreation extends TransactionBase { $transactionBody = new \Model\Messages\Gradido\TransactionBody(); $transactionBody->setMemo($memo); $transactionBody->setCreated($creationDate); + $transaction = new \Model\Messages\Gradido\TransactionCreation(); $transaction->setReceiverAmount($receiver); $transaction->setIdentHash($ident_hash); + echo "target date: "; + //var_dump($targetDate); + //die('die'); + if($targetDate) { + $targetDateTimestamp = new \Model\Messages\Gradido\TimestampSeconds(); + $targetDateTimestamp->setSeconds($targetDate->getTimestamp()); + //var_dump($targetDateTimestamp); die('target'); + $transaction->setTargetDate($targetDateTimestamp); + } + $transactionBody->setCreation($transaction); return ['state' => 'success', 'transactionBody' => $transactionBody]; } @@ -100,14 +113,19 @@ class TransactionCreation extends TransactionBase { // ident hash isn't collision ressistent, it is for speed up search $identHashBin = pack('a32', $this->getIdentHash()); - $existingCreations = $this->transactionCreationsTable + $q = $existingCreations = $this->transactionCreationsTable ->find('all') - ->select(['amount', 'state_user_id']) + ->select(['amount', 'state_user_id', 'target_date']) ->contain(['StateUsers' => ['fields' => ['StateUsers.public_key']]]); + + //$targetDate = $this->protoTransactionCreation->getTargetDate(); + //echo "choose existing transactions
"; + //$existingCreations->where([$q->func()->extract('YEAR_MONTH', 'target_date') . ' LIKE ' . $q->func()->extract('YEAR_MONTH', $targetDate)]); + // ->where(['EXTRACT(YEAR_MONTH FROM target_date) LIKE EXTRACT(YEAR_MONTH FROM']); // uncomment because ident hash didn't work at the moment //->where(['ident_hash' => $identHashBin]); //$existingCreations->select(['amount_sum' => $existingCreations->func()->sum('amount')]); - $existingCreations->select(['amount', 'state_user_id']); + /* old validation not more than 3k GDD for 3 Month*/ $existingCreations->matching('Transactions', function ($q) { return $q->where( @@ -115,8 +133,11 @@ class TransactionCreation extends TransactionBase { ['EXTRACT(YEAR_MONTH FROM Transactions.received) LIKE EXTRACT(YEAR_MONTH FROM NOW())', 'EXTRACT(YEAR_MONTH FROM DATE_ADD(Transactions.received, INTERVAL 2 MONTH)) LIKE EXTRACT(YEAR_MONTH FROM NOW())'] ])->select('received'); - }); + + + });//*/ //debug($existingCreations); + //echo "after choose existing transactions
"; $newSum = $this->getAmount(); //var_dump($existingCreations->toArray()); foreach($existingCreations as $creation) { diff --git a/src/Template/StateBalances/overview_gdt.ctp b/src/Template/StateBalances/overview_gdt.ctp index 1488928d2..ccf3e1069 100644 --- a/src/Template/StateBalances/overview_gdt.ctp +++ b/src/Template/StateBalances/overview_gdt.ctp @@ -48,7 +48,8 @@ $this->assign('title', __('GDT Kontoübersicht')); - + + @@ -58,6 +59,7 @@ $this->assign('title', __('GDT Kontoübersicht')); +
diff --git a/src/Template/TransactionCreations/create_multi.ctp b/src/Template/TransactionCreations/create_multi.ctp index f41da8e6f..346326fee 100644 --- a/src/Template/TransactionCreations/create_multi.ctp +++ b/src/Template/TransactionCreations/create_multi.ctp @@ -15,6 +15,9 @@ foreach($receiverProposal as $i => $receiver) { ]); }*/ $this->assign('title', __('Schöpfungstransaktion')); + +use Cake\I18n\FrozenTime; + ?>