diff --git a/src/Application/Helper/Overboekingen.php b/src/Application/Helper/Overboekingen.php new file mode 100644 index 0000000..5dc6e93 --- /dev/null +++ b/src/Application/Helper/Overboekingen.php @@ -0,0 +1,78 @@ +isValidIBAN($naar)) { + //error: ongeldige iban + throw new Exception("De IBAN van de ontvanger is ongeldig"); + } elseif (!($ibanHelper->getLand($naar) == "NL" && $ibanHelper->getBank($naar) === "INFO")) { + //error: andere bank + throw new Exception("U kunt geen overboeking naar een andere bank doen"); + } + $naarRekeningnr = $ibanHelper->getRekeningNummer($naar); + //TODO kijk of de rekening wel bestaat + if ($naarRekeningnr == $vanRekening['nr']) { + //error: afzender is hetzelfde als ontvanger + throw new Exception("De ontvangende rekening is hetzelfde als de verzendende"); + } + + + //TODO geldigheid bedrag onderzoeken + //$bedragValue = (double) $bedrag; + if (strlen($omschrijving) > 40) { + //error: te lange omschrijving + throw new Exception("De omschrijving is te lang"); + } + $db = Application::getContainer()->db; + $db->transacties->insert([ + "van" => $vanRekening['nr'], + "naar" => $naarRekeningnr, + "bedrag" => $bedrag, + "type" => $type, + "omschrijving" => $omschrijving + ]); + + //TODO update saldo + //TODO Checken of het saldo van de rekening onder de 20 euro komt, dan doe je een mededeling via de berichthelper. + } +} diff --git a/src/Application/Overboeking.php b/src/Application/Overboeking.php index a201280..78042c5 100644 --- a/src/Application/Overboeking.php +++ b/src/Application/Overboeking.php @@ -14,9 +14,11 @@ namespace Inforbank\Application; -use Inforbank\Application; -use Inforbank\Application\Helper\IBAN; +use Exception; +use Inforbank\Application\Auth\Middleware; use Inforbank\Application\Helper\Header; +use Inforbank\Application\Helper\IBAN; +use Inforbank\Application\Helper\Overboekingen; use Inforbank\Application\Helper\Redirect; use Inforbank\Application\Helper\Rekeningen; use Slim\App; @@ -31,7 +33,7 @@ class Overboeking 'header' => Header::getHeaderData(), 'rekeningen' => $rekeningen ]); - })->add(new Auth\Middleware()); + })->add(new Middleware()); $app->post('/overboeking', function ($request, $response, $args) { $post = $request->getParsedBody(); @@ -40,54 +42,14 @@ class Overboeking $bedrag = $post['bedrag']; $omschrijving = $post['omschrijving']; - $rekeningen = Rekeningen::getCurrentUserRekeningen(); - - $vanRekening = false; - //TODO fatsoenlijke errorafhandeling en redirect - //Controleer of de rekening wel van de ingelogde klant is - foreach ($rekeningen as $rek) { - if ($rek['nr'] === $van) { - $vanRekening = $rek; - break; - } - } - if (!$vanRekening) { - //error: rekening is niet van klant - return Redirect::create($request, $response, "/eigenaar"); - } - $ibanHelper = new IBAN(); - if (!$ibanHelper->isValidIBAN($naar)) { - //error: ongeldige iban - return Redirect::create($request, $response, "/ongeldig"); - } elseif (!($ibanHelper->getLand($naar) == "NL" && $ibanHelper->getBank($naar) === "INFO")) { - //error: andere bank - return Redirect::create($request, $response, "/andere"); - } - $naarRekeningnr = $ibanHelper->getRekeningNummer($naar); - //TODO kijk of de rekening wel bestaat - if ($naarRekeningnr == $vanRekening['nr']) { - //error: afzender is hetzelfde als ontvanger - return Redirect::create($request, $response, "/zelfde"); - } - - - //TODO geldigheid bedrag onderzoeken - //$bedragValue = (double) $bedrag; - //TODO omschrijving in database stoppen - if (strlen($omschrijving) > 40) { - //error: te lange omschrijving + try{ + $ibanhelper = new IBAN(); + Overboekingen::createOverboeking($ibanhelper->getIBAN($van), $naar, $bedrag, $omschrijving, "GT"); + }catch(Exception $e){ + return Redirect::create($request, $response, "/overboeking?$e"); + //NL84 INFO 0023 4567 89 } - $db = Application::getContainer()->db; - $db->transacties->insert([ - "van" => $vanRekening['nr'], - "naar" => $naarRekeningnr, - "bedrag" => $bedrag, - "type" => "GT" //GT staat voor internetbankieren - ]); - - //TODO update saldo - //TODO Checken of het saldo van de rekening onder de 20 euro komt, dan doe je een mededeling via de berichthelper. return Redirect::create($request, $response, "/"); - })->add(new Auth\Middleware()); + })->add(new Middleware()); } } diff --git a/src/Application/Transacties.php b/src/Application/Transacties.php index f178d43..06a2940 100644 --- a/src/Application/Transacties.php +++ b/src/Application/Transacties.php @@ -20,10 +20,9 @@ use Inforbank\Application\Helper\Rekeningen; use Inforbank\Application\Helper\IBAN; use Inforbank\Application; -class Transacties -{ - public function __construct(App $app) - { +class Transacties { + + public function __construct(App $app) { $app->get('/rekeningen/{rekeningnummer}', function ($request, $response, $args) { $rekeningen = Rekeningen::getCurrentUserRekeningen(); @@ -40,9 +39,9 @@ class Transacties } if (!$rekening) { return $this->renderer->render($response, 'transacties.phtml', [ - 'klant' => $klant, - 'rekening' => false - ]); + 'klant' => $klant, + 'rekening' => false + ]); } $container = Application::getContainer(); $db = $container->db; @@ -52,17 +51,19 @@ class Transacties foreach ($transacties as $transactie) { $returnArray[] = array( - "van" => $ibanhelper->getIBAN($transactie['van']), - "naar" => $ibanhelper->getIBAN($transactie['naar']), - "bedrag" => $transactie['bedrag'], - "type" => $transactie['type'] - ); + "van" => $ibanhelper->getIBAN($transactie['van']), + "naar" => $ibanhelper->getIBAN($transactie['naar']), + "bedrag" => $transactie['bedrag'], + "type" => $transactie['type'], + "omschrijving" => $transactie['omschrijving'] + ); } return $this->renderer->render($response, 'transacties.phtml', [ - 'header' => Header::getHeaderData(), - 'rekening' => $rekening, - 'transacties' => $returnArray + 'header' => Header::getHeaderData(), + 'rekening' => $rekening, + 'transacties' => $returnArray ]); })->add(new Auth\Middleware()); } + } diff --git a/templates/daniel.phtml b/templates/daniel.phtml index 2fa2496..ddedc5c 100644 --- a/templates/daniel.phtml +++ b/templates/daniel.phtml @@ -20,9 +20,6 @@ border-color: #2e6da4; margin-top: 5px; } - .jumbotron{ - //text-align: center; - } .form-control{ margin: 5px 0; }