1
0

Error afhandeling

This commit is contained in:
JelmerHinssen 2017-04-02 22:28:14 +02:00
parent ee1d1e9df2
commit 4bde697558
9 changed files with 189 additions and 125 deletions

View File

@ -17,6 +17,46 @@ class Overboekingen {
public static $POSITIEF = 7; public static $POSITIEF = 7;
public static $SALDO = 8; public static $SALDO = 8;
public static $OMSCHRIJVING = 9; public static $OMSCHRIJVING = 9;
public static $SPAARREKENING = 10;
public static function getErrorMessage($code) {
switch ($code) {
case Overboekingen::$EIGENAAR:
$message = "U bent niet de eigenaar van de 'van' rekening";
break;
case Overboekingen::$IBAN:
$message = "De IBAN van 'naar' is ongeldig";
break;
case Overboekingen::$BANK:
$message = "U kunt alleen binnen de InforBank geld overmaken";
break;
case Overboekingen::$BESTAAN:
$message = "De 'naar' rekening bestaat niet";
break;
case Overboekingen::$ZELFDE:
$message = "De 'van' en 'naar' rekening mogen niet hetzelfde zijn";
break;
case Overboekingen::$GETAL:
$message = "Het bedrag moet een getal zijn met maximaal 9 cijfers voor en 2 achter de komma";
break;
case Overboekingen::$POSITIEF:
$message = "Het bedrag moet positief zijn";
break;
case Overboekingen::$SALDO:
$message = "Uw saldo is te laag";
break;
case Overboekingen::$OMSCHRIJVING:
$message = "De omschrijving mag niet langer dan 40 tekens zijn";
break;
case Overboekingen::$SPAARREKENING:
$message = "Je kan geen geld overmaken van of naar een spaarrekening";
break;
default:
$message = "";
break;
}
return $message;
}
private static function isValidFloat($bedrag) { private static function isValidFloat($bedrag) {
$hasdecimal = false; $hasdecimal = false;
@ -55,6 +95,10 @@ class Overboekingen {
return true; return true;
} }
private static function error($code){
throw new Exception(Overboekingen::getErrorMessage($code), $code);
}
/** /**
* *
* @param IBAN $van De rekening waar het bedrag vanaf wordt gehaald * @param IBAN $van De rekening waar het bedrag vanaf wordt gehaald
@ -67,7 +111,7 @@ class Overboekingen {
$vanRekening = Rekeningen::isEigenRekeningIBAN($van); $vanRekening = Rekeningen::isEigenRekeningIBAN($van);
if (!$vanRekening) { if (!$vanRekening) {
//error: rekening is niet van klant //error: rekening is niet van klant
throw new Exception("U bent niet de eigenaar van deze rekening", Overboekingen::$EIGENAAR); Overboekingen::error(Overboekingen::$EIGENAAR);
} }
$ibanHelper = new IBAN(); $ibanHelper = new IBAN();
if (!$ibanHelper->isValidIBAN($naar)) { if (!$ibanHelper->isValidIBAN($naar)) {
@ -75,38 +119,42 @@ class Overboekingen {
throw new Exception("De IBAN van de ontvanger is ongeldig", Overboekingen::$IBAN); throw new Exception("De IBAN van de ontvanger is ongeldig", Overboekingen::$IBAN);
} elseif (!($ibanHelper->getLand($naar) == "NL" && $ibanHelper->getBank($naar) === "INFO")) { } elseif (!($ibanHelper->getLand($naar) == "NL" && $ibanHelper->getBank($naar) === "INFO")) {
//error: andere bank //error: andere bank
throw new Exception("U kunt geen overboeking naar een andere bank doen", Overboekingen::$BANK); Overboekingen::error(Overboekingen::$BANK);
} }
$naarRekeningnr = $ibanHelper->getRekeningNummer($naar); $naarRekeningnr = $ibanHelper->getRekeningNummer($naar);
//Controleer of de rekening bestaat //Controleer of de rekening bestaat
$db = Application::getContainer()->db; $db = Application::getContainer()->db;
$naarRekening = $db->rekeningen->where("rekeningnr", $naarRekeningnr); $naarRekeningen = $db->rekeningen->where("rekeningnr", $naarRekeningnr);
if (count($naarRekening) !== 1) { if (count($naarRekeningen) !== 1) {
//error: rekening bestaat niet //error: rekening bestaat niet
throw new Exception("De ontvangende rekening bestaat niet", Overboekingen::$BESTAAN); Overboekingen::error(Overboekingen::$BESTAAN);
}
foreach ($naarRekening as $rekening) {
$naarid = $rekening['id'];
} }
$naarRekening = $naarRekeningen[array("rekeningnr" => $naarRekeningnr)];
if ($naarRekeningnr == $vanRekening['nr']) { if ($naarRekeningnr == $vanRekening['nr']) {
//error: afzender is hetzelfde als ontvanger //error: afzender is hetzelfde als ontvanger
throw new Exception("De ontvangende rekening is hetzelfde als de verzendende", Overboekingen::$ZELFDE); Overboekingen::error(Overboekingen::$ZELFDE);
} }
if(!Rekeningen::isEigenRekeningnr($naarRekeningnr)
&& ((int)$naarRekening['typeid'] === Rekeningen::$SPAARREKENING
|| (int)$vanRekening['typeid'] === Rekeningen::$SPAARREKENING)){
Overboekingen::error(Overboekingen::$SPAARREKENING);
}
if (!Overboekingen::isValidFloat($bedrag)) { if (!Overboekingen::isValidFloat($bedrag)) {
throw new Exception("Geef als bedrag een getal op met maximaal 9 cijfers voor en 2 na de komma", Overboekingen::$GETAL); Overboekingen::error(Overboekingen::$GETAL);
} }
if ($bedrag <= 0) { if ($bedrag <= 0) {
throw new Exception("Het bedrag moet positief zijn", Overboekingen::$POSITIEF); Overboekingen::error(Overboekingen::$POSITIEF);
} }
$bedragvalue = doubleval(str_replace(",", ".", $bedrag)); $bedragvalue = doubleval(str_replace(",", ".", $bedrag));
if ($bedragvalue > $vanRekening['saldo']) { if ($bedragvalue > $vanRekening['saldo']) {
throw new Exception("Te laag saldo", Overboekingen::$SALDO); Overboekingen::error(Overboekingen::$SALDO);
} }
if (strlen($omschrijving) > 40 && $type !== "id") { if (strlen($omschrijving) > 40 && $type !== "id") {
//error: te lange omschrijving //error: te lange omschrijving
throw new Exception("De omschrijving is te lang", Overboekingen::$OMSCHRIJVING); Overboekingen::error(Overboekingen::$OMSCHRIJVING);
} }
//Voeg transactie toe //Voeg transactie toe
$db->transacties->insert([ $db->transacties->insert([
@ -122,8 +170,8 @@ class Overboekingen {
$db->rekeningen->where("rekeningnr", $vanRekening['nr'])->update([ $db->rekeningen->where("rekeningnr", $vanRekening['nr'])->update([
"saldo" => $vanRekening['saldo'] - $bedragvalue "saldo" => $vanRekening['saldo'] - $bedragvalue
]); ]);
$naarRekening[$naarid]->update([ $naarRekening->update([
"saldo" => $naarRekening[$naarid]['saldo'] + $bedragvalue "saldo" => $naarRekening['saldo'] + $bedragvalue
]); ]);
//Stuur bericht bij laag saldo //Stuur bericht bij laag saldo
if ($vanRekening['saldo'] - $bedragvalue < 20) { if ($vanRekening['saldo'] - $bedragvalue < 20) {
@ -131,8 +179,8 @@ class Overboekingen {
} }
//In de database worden de getallen met 10 cijfers voor de komma opgeslagen //In de database worden de getallen met 10 cijfers voor de komma opgeslagen
//Als het saldo te hoog wordt heb je een probleem //Als het saldo te hoog wordt heb je een probleem
if ($naarRekening[$naarid]['saldo'] + $bedragvalue > 9000000000) { if ($naarRekening['saldo'] + $bedragvalue > 9000000000) {
Berichten::newBericht($naarRekening[$naarid]['klantid'], "De InforBank", "Uw saldo is te hoog"); Berichten::newBericht($naarRekening['klantid'], "De InforBank", "Uw saldo is te hoog");
} }
} }

View File

@ -18,6 +18,9 @@ use Inforbank\Application;
class Rekeningen class Rekeningen
{ {
public static $BETAALREKENING = 1;
public static $SPAARREKENING = 2;
public static function getCurrentUserRekeningen() public static function getCurrentUserRekeningen()
{ {
$container = Application::getContainer(); $container = Application::getContainer();

View File

@ -21,9 +21,9 @@ class Statistieken {
$db = $container->db; $db = $container->db;
$saldo = $db->rekeningen->where("rekeningnr", $rekeningNummer)[array("rekeningnr" => $rekeningNummer)]['saldo']; $saldo = $db->rekeningen->where("rekeningnr", $rekeningNummer)[array("rekeningnr" => $rekeningNummer)]['saldo'];
$eraf = $db->transacties->select("datum, SUM(bedrag) as bedr")->where("van", $rekeningNummer) $eraf = $db->transacties->select("datum, SUM(bedrag) as bedr")->where("van", $rekeningNummer)
->group("datum")->order("datum ASC, id DESC"); ->group("datum");
$erbij = $db->transacties->select("datum, SUM(bedrag) as bedr")->where("naar", $rekeningNummer) $erbij = $db->transacties->select("datum, SUM(bedrag) as bedr")->where("naar", $rekeningNummer)
->group("datum")->order("datum ASC, id DESC"); ->group("datum");
$huidigSaldo = (double)$saldo; $huidigSaldo = (double)$saldo;
$yas = array($huidigSaldo); $yas = array($huidigSaldo);
for($i = 1; $i <= $dagen; $i++){ for($i = 1; $i <= $dagen; $i++){

View File

@ -27,11 +27,12 @@ class Overboeking
{ {
public function __construct(App $app) public function __construct(App $app)
{ {
$app->get('/overboeking', function ($request, $response, $args) { $app->get('/overboeking', function ($request, $response, $args) use($app) {
$rekeningen = Rekeningen::getCurrentUserRekeningen(); $rekeningen = Rekeningen::getCurrentUserRekeningen();
return $this->renderer->render($response, 'overboeking.phtml', [ return $this->renderer->render($response, 'overboeking.phtml', [
'header' => Header::getHeaderData(), 'header' => Header::getHeaderData(),
'rekeningen' => $rekeningen 'rekeningen' => $rekeningen,
'error' => $_GET['error']
]); ]);
})->add(new Middleware()); })->add(new Middleware());
@ -45,7 +46,7 @@ class Overboeking
try { try {
$ibanhelper = new IBAN(); $ibanhelper = new IBAN();
Overboekingen::createOverboeking($ibanhelper->getIBAN($van), $naar, $bedrag, $omschrijving, "bg"); Overboekingen::createOverboeking($ibanhelper->getIBAN($van), $naar, $bedrag, $omschrijving, "bg");
return Redirect::create($request, $response, "/rekeningen/$van"); return Redirect::create($request, $response, "/rekeningen/$van?geslaagd=1");
} catch (Exception $e) { } catch (Exception $e) {
return Redirect::create($request, $response, "/overboeking?error=" . $e->getCode() . ""); return Redirect::create($request, $response, "/overboeking?error=" . $e->getCode() . "");
} }

View File

@ -26,6 +26,7 @@ class Statistieken {
$verloop = StatistiekenHelper::getSaldoverloop(30, $args['rekeningnummer']); $verloop = StatistiekenHelper::getSaldoverloop(30, $args['rekeningnummer']);
return $this->renderer->render($response, "statistieken.phtml", [ return $this->renderer->render($response, "statistieken.phtml", [
"header" => Header::getHeaderData(), "header" => Header::getHeaderData(),
"rekeningnr" => $args['rekeningnummer'],
"statistieken" => [ "statistieken" => [
"x-as" => $verloop['x-as'], "x-as" => $verloop['x-as'],
"y-as" => $verloop['y-as'] "y-as" => $verloop['y-as']

View File

@ -63,7 +63,8 @@ class Transacties {
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,
'geslaagd' => $_GET['geslaagd']
]); ]);
})->add(new Auth\Middleware()); })->add(new Auth\Middleware());
} }

View File

@ -1,7 +1,13 @@
<?php include '__header.phtml'; ?> <?php include '__header.phtml'; ?>
<h2 class="page-header">Nieuwe overboeking</h2> <h2 class="page-header">Nieuwe overboeking</h2>
<?php
if (isset($error)) {
?>
<div class="alert alert-danger" role="alert"><?php echo Inforbank\Application\Helper\Overboekingen::getErrorMessage($error) ?></div>
<?php
}
?>
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-body"> <div class="panel-body">
<form method="post" action="" class="form-horizontal"> <form method="post" action="" class="form-horizontal">

View File

@ -1,4 +1,5 @@
<?php include '__header.phtml'; ?> <?php include '__header.phtml'; ?>
<a class="btn btn-default pull-left" href="rekeningen/<?= $rekeningnr?>" role="button">Terug</a>
<canvas id="myChart" height="100"></canvas> <canvas id="myChart" height="100"></canvas>
<script> <script>
function newDate(days) { function newDate(days) {

View File

@ -6,10 +6,13 @@ if (!$rekening) {
<div class="alert alert-danger" role="alert"><b>Fout!</b> Dit is niet een aan jouw account gekoppelde rekening.</div> <div class="alert alert-danger" role="alert"><b>Fout!</b> Dit is niet een aan jouw account gekoppelde rekening.</div>
<?php <?php
} else { } else {
if ($geslaagd) {
?>
<div class="alert alert-info" role="alert">De transactie is geslaagd</div>
<?php
}
?> ?>
<h2 class="page-header">Transactieoverzicht <h2 class="page-header">Transactieoverzicht
<a class="btn btn-default pull-right" href="overboeking" role="button">Nieuwe overboeking</a> <a class="btn btn-default pull-right" href="overboeking" role="button">Nieuwe overboeking</a>
<a class="btn btn-default pull-right" href="statistieken/<?= $rekening['nr'] ?>" role="button">Statistieken</a></h2> <a class="btn btn-default pull-right" href="statistieken/<?= $rekening['nr'] ?>" role="button">Statistieken</a></h2>
@ -60,12 +63,12 @@ foreach ($transacties as $transactie) {
echo "<td>" . money_format('%(#1n', $transactie['bedrag']) . "</td>\n"; echo "<td>" . money_format('%(#1n', $transactie['bedrag']) . "</td>\n";
echo "</tr>"; echo "</tr>";
} ?> }
?>
</table> </table>
<br/> <br/>
<small>ba = betaalautomaat, bg = bankgiro/SEPA opdracht, id = Inforbank Direct Online Betalen (iDeal), sp = spoedbetaling</small> <small>ba = betaalautomaat, bg = bankgiro/SEPA opdracht, id = Inforbank Direct Online Betalen (iDeal), sp = spoedbetaling</small>
<?php <?php
} }
?> ?>
<?php include '__footer.phtml'; ?> <?php include '__footer.phtml'; ?>