1
0
Fork 0

Overboekingen helper

merge-requests/3/head
JelmerHinssen 7 years ago
parent 7db872748e
commit c8521ff824

@ -0,0 +1,78 @@
<?php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
namespace Inforbank\Application\Helper;
use Exception;
use Inforbank\Application;
/**
* Description of Overboekingen
*
* @author Sjelm
*/
class Overboekingen {
/**
*
* @param IBAN $van De rekening waar het bedrag vanaf wordt gehaald
* @param IBAN $naar De rekening waar het bedrag bijkomt
* @param double $bedrag Het bedrag
* @param string $omschrijving De omschrijving van de overoeking
* $param string $type Het type overboeking
*/
public static function createOverboeking($van, $naar, $bedrag, $omschrijving, $type){
$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['iban'] === $van) {
$vanRekening = $rek;
break;
}
}
if (!$vanRekening) {
//error: rekening is niet van klant
throw new Exception("U bent niet de eigenaar van deze rekening");
}
$ibanHelper = new IBAN();
if (!$ibanHelper->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.
}
}

@ -14,9 +14,11 @@
namespace Inforbank\Application; namespace Inforbank\Application;
use Inforbank\Application; use Exception;
use Inforbank\Application\Helper\IBAN; use Inforbank\Application\Auth\Middleware;
use Inforbank\Application\Helper\Header; use Inforbank\Application\Helper\Header;
use Inforbank\Application\Helper\IBAN;
use Inforbank\Application\Helper\Overboekingen;
use Inforbank\Application\Helper\Redirect; use Inforbank\Application\Helper\Redirect;
use Inforbank\Application\Helper\Rekeningen; use Inforbank\Application\Helper\Rekeningen;
use Slim\App; use Slim\App;
@ -31,7 +33,7 @@ class Overboeking
'header' => Header::getHeaderData(), 'header' => Header::getHeaderData(),
'rekeningen' => $rekeningen 'rekeningen' => $rekeningen
]); ]);
})->add(new Auth\Middleware()); })->add(new Middleware());
$app->post('/overboeking', function ($request, $response, $args) { $app->post('/overboeking', function ($request, $response, $args) {
$post = $request->getParsedBody(); $post = $request->getParsedBody();
@ -40,54 +42,14 @@ class Overboeking
$bedrag = $post['bedrag']; $bedrag = $post['bedrag'];
$omschrijving = $post['omschrijving']; $omschrijving = $post['omschrijving'];
$rekeningen = Rekeningen::getCurrentUserRekeningen(); try{
$ibanhelper = new IBAN();
$vanRekening = false; Overboekingen::createOverboeking($ibanhelper->getIBAN($van), $naar, $bedrag, $omschrijving, "GT");
//TODO fatsoenlijke errorafhandeling en redirect }catch(Exception $e){
//Controleer of de rekening wel van de ingelogde klant is return Redirect::create($request, $response, "/overboeking?$e");
foreach ($rekeningen as $rek) { //NL84 INFO 0023 4567 89
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
} }
$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, "/"); return Redirect::create($request, $response, "/");
})->add(new Auth\Middleware()); })->add(new Middleware());
} }
} }

@ -20,10 +20,9 @@ use Inforbank\Application\Helper\Rekeningen;
use Inforbank\Application\Helper\IBAN; use Inforbank\Application\Helper\IBAN;
use Inforbank\Application; use Inforbank\Application;
class Transacties class Transacties {
{
public function __construct(App $app) public function __construct(App $app) {
{
$app->get('/rekeningen/{rekeningnummer}', function ($request, $response, $args) { $app->get('/rekeningen/{rekeningnummer}', function ($request, $response, $args) {
$rekeningen = Rekeningen::getCurrentUserRekeningen(); $rekeningen = Rekeningen::getCurrentUserRekeningen();
@ -40,9 +39,9 @@ class Transacties
} }
if (!$rekening) { if (!$rekening) {
return $this->renderer->render($response, 'transacties.phtml', [ return $this->renderer->render($response, 'transacties.phtml', [
'klant' => $klant, 'klant' => $klant,
'rekening' => false 'rekening' => false
]); ]);
} }
$container = Application::getContainer(); $container = Application::getContainer();
$db = $container->db; $db = $container->db;
@ -52,17 +51,19 @@ class Transacties
foreach ($transacties as $transactie) { foreach ($transacties as $transactie) {
$returnArray[] = array( $returnArray[] = array(
"van" => $ibanhelper->getIBAN($transactie['van']), "van" => $ibanhelper->getIBAN($transactie['van']),
"naar" => $ibanhelper->getIBAN($transactie['naar']), "naar" => $ibanhelper->getIBAN($transactie['naar']),
"bedrag" => $transactie['bedrag'], "bedrag" => $transactie['bedrag'],
"type" => $transactie['type'] "type" => $transactie['type'],
); "omschrijving" => $transactie['omschrijving']
);
} }
return $this->renderer->render($response, 'transacties.phtml', [ return $this->renderer->render($response, 'transacties.phtml', [
'header' => Header::getHeaderData(), 'header' => Header::getHeaderData(),
'rekening' => $rekening, 'rekening' => $rekening,
'transacties' => $returnArray 'transacties' => $returnArray
]); ]);
})->add(new Auth\Middleware()); })->add(new Auth\Middleware());
} }
} }

@ -20,9 +20,6 @@
border-color: #2e6da4; border-color: #2e6da4;
margin-top: 5px; margin-top: 5px;
} }
.jumbotron{
//text-align: center;
}
.form-control{ .form-control{
margin: 5px 0; margin: 5px 0;
} }