Skip to content

Commit

Permalink
Complete group header tag
Browse files Browse the repository at this point in the history
  • Loading branch information
php-wizard committed Dec 24, 2022
1 parent 49b66e4 commit d244aad
Show file tree
Hide file tree
Showing 17 changed files with 623 additions and 20 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
},
"require-dev": {
"orchestra/testbench": "^3.8",
"phpstan/phpstan": "1.4.*"
"phpstan/phpstan": "1.7.6"

This comment has been minimized.

Copy link
@y-martini

y-martini Dec 25, 2022

@php-wizard:

  1. come mai hai dovuto aggiornare?
  2. la versione non deve essere "frizzata"

This comment has been minimized.

Copy link
@php-wizard

php-wizard Dec 25, 2022

Author Collaborator

@yuriy-martini Ho dovuto aggiornare perche' il phpstan ha un baco nelle versioni precedenti: mi dava errore che non posso ridichiarare una classe gia' definita (che invece non esisteva).
Risolto in 1.7.6. , che pero' richiede PHP >= 7.2, quindi ho dovuto aggiornare anche quello

Per non freezarla, possiamo mettere ">=1.7.6" ?
o "1.7.*" ?

This comment has been minimized.

Copy link
@php-wizard

php-wizard Dec 25, 2022

Author Collaborator

@yuriy-martini Oppure quando finisco il resto del codice, rimetto a 1.4.* e PHP 7.1 , e vedo se per miracolo non si verifica piu' quel baco, allora lo lasceremo alla versione vecchia.

This comment has been minimized.

Copy link
@y-martini

y-martini Dec 27, 2022

@yuriy-martini Ho dovuto aggiornare perche' il phpstan ha un baco nelle versioni precedenti: mi dava errore che non posso ridichiarare una classe gia' definita (che invece non esisteva). Risolto in 1.7.6. , che pero' richiede PHP >= 7.2, quindi ho dovuto aggiornare anche quello

Per non freezarla, possiamo mettere ">=1.7.6" ? o "1.7.*" ?

puoi linkarmi per cortesia questo bug?

This comment has been minimized.

Copy link
@php-wizard

php-wizard Dec 27, 2022

Author Collaborator

@yuriy-martini phpstan/phpstan#7328

Comunque al prossimo commit provo a downgradare di nuovo e riprovare

},
"autoload": {
"psr-4": {
Expand Down
79 changes: 79 additions & 0 deletions src/GroupHeaderBuilder.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
<?php

namespace Condividendo\LaravelCBI;

use Condividendo\LaravelCBI\Entities\InitiatingParty;
use Condividendo\LaravelCBI\Tags\GroupHeader as GroupHeaderTag;

class PaymentRequestBuilder
{
/**
* @var string
*/
protected $messageId;

/**
* @var string
*/
protected $creditTime;

/**
* @var int
*/
protected $numberOfTxs;

/**
* @var string
*/
protected $ctrlSum;

/**
* @var array<\Condividendo\LaravelCBI\Entities\InitiatingParty>
*/
protected $initiatingParty;

public function setMessageId(string $messageId): self
{
$this->messageId = $messageId;

return $this;
}

public function setCreditTime(string $creditTime): self
{
$this->creditTime = $creditTime;

return $this;
}

public function setNumberOfTxs(int $numberOfTxs): self
{
$this->numberOfTxs = $numberOfTxs;

return $this;
}

public function setControlSum(string $ctrlSum): self
{
$this->ctrlSum = $ctrlSum;

return $this;
}

public function setInitiatingParty(InitiatingParty $initiatingParty): self
{
$this->initiatingParty = $initiatingParty;

return $this;
}

protected function makeGroupHeader(): GroupHeaderTag
{
return GroupHeaderTag::make()->setMessageId($this->messageId)
->setNumberOfTxs($this->numberOfTxs)
->setCreditTime($this->creditTime)
->setControlSum($this->ctrlSum)
->setInitiatingParty($this->initiatingParty->getTag());
}

}
22 changes: 3 additions & 19 deletions src/PaymentRequestBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,26 +34,16 @@
use DOMDocument;
use SimpleXMLElement;

class PaymentRequestBuilder
class PaymentRequestBuilder extends GroupHeaderBuilder
{
/**
* @var string
*/
private $messageId;

/**
* @var array<\Condividendo\LaravelCBI\Entities\InitiatingParty>
*/
private $initiatingParty;

/**
* @var array<\Condividendo\LaravelCBI\PaymentRequest\Entities\PaymentInstruction>
*/
private $paymentInstruction;

public function setInitiatingParty(InitiatingParty $initiatingParty): self
public function setPaymentInstruction(PaymentInstruction $paymentInstruction): self
{
$this->initiatingParty = $initiatingParty;
$this->paymentInstruction = $paymentInstruction;

return $this;
}
Expand Down Expand Up @@ -81,12 +71,6 @@ private function makePaymentRequestTag(): PaymentRequestTag
->setPaymentInfo($this->makePaymentInfo());
}

private function makeGroupHeader(): GroupHeaderTag
{
return GroupHeaderTag::make()->setMessageId($this->messageId)
->setInitiatingParty($this->initiatingParty->getTag());
}

private function makePaymentInfo(): PaymentInfoTag
{
return PaymentInfoTag::make(); // TODO
Expand Down
33 changes: 33 additions & 0 deletions src/Tags/CreditTime.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php
namespace Condividendo\LaravelCBI\Tags;

use Condividendo\LaravelCBI\Traits\Makeable;
use Condividendo\LaravelCBI\Traits\UsesDate;
use DOMDocument;
use DOMElement;

class CreditTime extends Tag
{
use Makeable;
use UsesDate;

/**
* @var string
*/
private $creditTime;

public function setCreditTime(string $creditTime): self
{
$this->creditTime = self::makeDateIso8601($creditTime);

return $this;
}

/**
* @noinspection PhpUnhandledExceptionInspection
*/
public function toDOMElement(DOMDocument $dom): DOMElement
{
return $dom->createElement('CreDtTm',$this->creditTime);
}
}
33 changes: 33 additions & 0 deletions src/Tags/CtrlSum.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php
namespace Condividendo\LaravelCBI\Tags;

use Condividendo\LaravelCBI\Traits\Makeable;
use Condividendo\LaravelCBI\Traits\UsesDecimal;
use DOMDocument;
use DOMElement;

class CtrlSum extends Tag
{
use Makeable;
use UsesDecimal;

/**
* @var string
*/
private $controlSum;

public function setControlSum(string $controlSum): self
{
$this->controlSum = self::makeDecimal($controlSum);

return $this;
}

/**
* @noinspection PhpUnhandledExceptionInspection
*/
public function toDOMElement(DOMDocument $dom): DOMElement
{
return $dom->createElement('CtrlSum',$this->controlSum);
}
}
89 changes: 89 additions & 0 deletions src/Tags/GroupHeader.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
<?php
namespace Condividendo\LaravelCBI\Tags;

use Condividendo\LaravelCBI\Traits\Makeable;
use Condividendo\LaravelCBI\Tags\MessageId;
use Condividendo\LaravelCBI\Tags\InitiatingParty;
use Condividendo\LaravelCBI\Tags\CreditTime;
use Condividendo\LaravelCBI\Tags\NumberOfTxs;
use Condividendo\LaravelCBI\Tags\CtrlSum;
use DOMDocument;
use DOMElement;

class GroupHeader extends Tag
{
use Makeable;

/**
* @var \Condividendo\LaravelCBI\Tags\MessageId
*/
private $messageId;

/**
* @var \Condividendo\LaravelCBI\Tags\CreditTime
*/
private $creditTime;

/**
* @var \Condividendo\LaravelCBI\Tags\NumberOfTxs
*/
private $numberOfTxs;

/**
* @var \Condividendo\LaravelCBI\Tags\CtrlSum
*/
private $ctrlSum;

/**
* @var \Condividendo\LaravelCBI\Tags\InitiatingParty
*/
private $initiatingParty;

public function setMessageId(string $messageId): self
{
$this->messageId = MessageId::make()->setMessageId($messageId);

return $this;
}

public function setCreditTime(string $creditTime): self
{
$this->creditTime = CreditTime::make()->setCreditTime($creditTime);

return $this;
}

public function setNumberOfTxs(int $numberOfTxs): self
{
$this->numberOfTxs = NumberOfTxs::make()->setNumberOfTxs($numberOfTxs);

return $this;
}

public function setControlSum(string $controlSum): self
{
$this->ctrlSum = CtrlSum::make()->setControlSum($controlSum);

return $this;
}

public function setInitiatingParty(InitiatingParty $initiatingParty): self
{
$this->initiatingParty = $initiatingParty;

return $this;
}

/**
* @noinspection PhpUnhandledExceptionInspection
*/
public function toDOMElement(DOMDocument $dom): DOMElement
{
$e = $dom->createElement('GrpHdr');

$e->appendChild($this->messageId->toDOMElement($dom));
$e->appendChild($this->initiatingParty->toDOMElement($dom));

return $e;
}
}
31 changes: 31 additions & 0 deletions src/Tags/Id.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?php
namespace Condividendo\LaravelCBI\Tags;

use Condividendo\LaravelCBI\Traits\Makeable;
use DOMDocument;
use DOMElement;

class Id extends Tag
{
use Makeable;

/**
* @var string
*/
private $id;

public function setId(string $id): self
{
$this->id = $id;

return $this;
}

/**
* @noinspection PhpUnhandledExceptionInspection
*/
public function toDOMElement(DOMDocument $dom): DOMElement
{
return $dom->createElement('Id',$this->id);
}
}
50 changes: 50 additions & 0 deletions src/Tags/InitiatingParty.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<?php
namespace Condividendo\LaravelCBI\Tags;

use Condividendo\LaravelCBI\Traits\Makeable;
use Condividendo\LaravelCBI\Tags\Name;
use Condividendo\LaravelCBI\Tags\Id;
use DOMDocument;
use DOMElement;

class InitiatingParty extends Tag
{
use Makeable;

/**
* @var \Condividendo\LaravelCBI\Tags\Name
*/
private $name;

/**
* @var \Condividendo\LaravelCBI\Tags\InitiatingPartyId
*/
private $id;

public function setName(string $name): self
{
$this->name = Name::make()->setName($name);

return $this;
}

public function setId(string $id, string $issr): self
{
$this->id = InitiatingPartyId::make()->setId($id,$issr);

return $this;
}

/**
* @noinspection PhpUnhandledExceptionInspection
*/
public function toDOMElement(DOMDocument $dom): DOMElement
{
$e = $dom->createElement('InitgPty');

$e->appendChild($this->name->toDOMElement($dom));
$e->appendChild($this->id->toDOMElement($dom));

return $e;
}
}
Loading

0 comments on commit d244aad

Please sign in to comment.