diff --git a/src/DataTypes/EPC.php b/src/DataTypes/EPC.php new file mode 100644 index 0000000..7fdb299 --- /dev/null +++ b/src/DataTypes/EPC.php @@ -0,0 +1,105 @@ +setProperties($arguments); + } + + /** + * Returns the correct QrCode format. + * + * @return string + */ + public function __toString() + { + $string = "BCD\n"; + $string .= "002\n"; + $string .= "2\n"; + $string .= "SCT\n"; + $string .= $this->bic."\n"; + $string .= $this->name."\n"; + $string .= $this->iban."\n"; + $string .= 'EUR'.number_format($this->amount, 2)."\n"; + $string .= "\n"; + $string .= "\n"; + $string .= $this->text."\n"; + + return $string; + } + + /** + * Sets the properties. + * + * @param $arguments + */ + protected function setProperties(array $arguments) + { + $arguments = $arguments[0]; + if (isset($arguments['bic'])) { + $this->bic = $arguments['bic']; + } + if (isset($arguments['iban'])) { + $this->iban = $arguments['iban']; + } + if (isset($arguments['amount'])) { + $this->amount = $arguments['amount']; + } + if (isset($arguments['name'])) { + $this->name = $arguments['name']; + } + if (isset($arguments['text'])) { + $this->text = $arguments['text']; + } + } +} diff --git a/tests/DataTypes/EPCTest.php b/tests/DataTypes/EPCTest.php new file mode 100644 index 0000000..0a57b3f --- /dev/null +++ b/tests/DataTypes/EPCTest.php @@ -0,0 +1,55 @@ + 'BIC123', + 'iban' => 'IBAN456', + 'amount' => '1000.50', + 'name' => 'John Doe', + 'text' => 'Test payment', + ]; + + $epc = new EPC(); + $epc->create([$arguments]); + + $expected = "BCD\n"; + $expected .= "002\n"; + $expected .= "2\n"; + $expected .= "SCT\n"; + $expected .= $arguments['bic']."\n"; + $expected .= $arguments['name']."\n"; + $expected .= $arguments['iban']."\n"; + $expected .= 'EUR'.number_format($arguments['amount'], 2)."\n"; + $expected .= "\n"; + $expected .= "\n"; + $expected .= $arguments['text']."\n"; + + $this->assertEquals($expected, $epc->__toString()); + } + + public function testSetProperties() + { + $arguments = [ + 'bic' => 'BIC123', + 'iban' => 'IBAN456', + 'amount' => '1000.50', + 'name' => 'John Doe', + 'text' => 'Test payment', + ]; + + $epc = new EPC(); + $epc->create([$arguments]); + + $this->assertEquals($arguments['bic'], $epc->getBic()); + $this->assertEquals($arguments['iban'], $epc->getIban()); + $this->assertEquals($arguments['amount'], $epc->getAmount()); + $this->assertEquals($arguments['name'], $epc->getName()); + $this->assertEquals($arguments['text'], $epc->getText()); + } +}