diff --git a/src/Application/Helper/Overboekingen.php b/src/Application/Helper/Overboekingen.php index dd9fb7a..24563f9 100644 --- a/src/Application/Helper/Overboekingen.php +++ b/src/Application/Helper/Overboekingen.php @@ -17,6 +17,46 @@ class Overboekingen { public static $POSITIEF = 7; public static $SALDO = 8; 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) { $hasdecimal = false; @@ -55,6 +95,10 @@ class Overboekingen { 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 @@ -67,7 +111,7 @@ class Overboekingen { $vanRekening = Rekeningen::isEigenRekeningIBAN($van); if (!$vanRekening) { //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(); if (!$ibanHelper->isValidIBAN($naar)) { @@ -75,38 +119,42 @@ class Overboekingen { throw new Exception("De IBAN van de ontvanger is ongeldig", Overboekingen::$IBAN); } elseif (!($ibanHelper->getLand($naar) == "NL" && $ibanHelper->getBank($naar) === "INFO")) { //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); //Controleer of de rekening bestaat $db = Application::getContainer()->db; - $naarRekening = $db->rekeningen->where("rekeningnr", $naarRekeningnr); - if (count($naarRekening) !== 1) { + $naarRekeningen = $db->rekeningen->where("rekeningnr", $naarRekeningnr); + if (count($naarRekeningen) !== 1) { //error: rekening bestaat niet - throw new Exception("De ontvangende rekening bestaat niet", Overboekingen::$BESTAAN); - } - foreach ($naarRekening as $rekening) { - $naarid = $rekening['id']; + Overboekingen::error(Overboekingen::$BESTAAN); } + $naarRekening = $naarRekeningen[array("rekeningnr" => $naarRekeningnr)]; if ($naarRekeningnr == $vanRekening['nr']) { //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)) { - 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) { - throw new Exception("Het bedrag moet positief zijn", Overboekingen::$POSITIEF); + Overboekingen::error(Overboekingen::$POSITIEF); } $bedragvalue = doubleval(str_replace(",", ".", $bedrag)); if ($bedragvalue > $vanRekening['saldo']) { - throw new Exception("Te laag saldo", Overboekingen::$SALDO); + Overboekingen::error(Overboekingen::$SALDO); } if (strlen($omschrijving) > 40 && $type !== "id") { //error: te lange omschrijving - throw new Exception("De omschrijving is te lang", Overboekingen::$OMSCHRIJVING); + Overboekingen::error(Overboekingen::$OMSCHRIJVING); } //Voeg transactie toe $db->transacties->insert([ @@ -122,8 +170,8 @@ class Overboekingen { $db->rekeningen->where("rekeningnr", $vanRekening['nr'])->update([ "saldo" => $vanRekening['saldo'] - $bedragvalue ]); - $naarRekening[$naarid]->update([ - "saldo" => $naarRekening[$naarid]['saldo'] + $bedragvalue + $naarRekening->update([ + "saldo" => $naarRekening['saldo'] + $bedragvalue ]); //Stuur bericht bij laag saldo if ($vanRekening['saldo'] - $bedragvalue < 20) { @@ -131,8 +179,8 @@ class Overboekingen { } //In de database worden de getallen met 10 cijfers voor de komma opgeslagen //Als het saldo te hoog wordt heb je een probleem - if ($naarRekening[$naarid]['saldo'] + $bedragvalue > 9000000000) { - Berichten::newBericht($naarRekening[$naarid]['klantid'], "De InforBank", "Uw saldo is te hoog"); + if ($naarRekening['saldo'] + $bedragvalue > 9000000000) { + Berichten::newBericht($naarRekening['klantid'], "De InforBank", "Uw saldo is te hoog"); } } diff --git a/src/Application/Helper/Rekeningen.php b/src/Application/Helper/Rekeningen.php index daae717..406c524 100644 --- a/src/Application/Helper/Rekeningen.php +++ b/src/Application/Helper/Rekeningen.php @@ -18,6 +18,9 @@ use Inforbank\Application; class Rekeningen { + public static $BETAALREKENING = 1; + public static $SPAARREKENING = 2; + public static function getCurrentUserRekeningen() { $container = Application::getContainer(); diff --git a/src/Application/Helper/Statistieken.php b/src/Application/Helper/Statistieken.php index 09a41c3..841b9c7 100644 --- a/src/Application/Helper/Statistieken.php +++ b/src/Application/Helper/Statistieken.php @@ -21,9 +21,9 @@ class Statistieken { $db = $container->db; $saldo = $db->rekeningen->where("rekeningnr", $rekeningNummer)[array("rekeningnr" => $rekeningNummer)]['saldo']; $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) - ->group("datum")->order("datum ASC, id DESC"); + ->group("datum"); $huidigSaldo = (double)$saldo; $yas = array($huidigSaldo); for($i = 1; $i <= $dagen; $i++){ diff --git a/src/Application/Overboeking.php b/src/Application/Overboeking.php index 48c6d88..c0b985c 100644 --- a/src/Application/Overboeking.php +++ b/src/Application/Overboeking.php @@ -27,11 +27,12 @@ class Overboeking { public function __construct(App $app) { - $app->get('/overboeking', function ($request, $response, $args) { + $app->get('/overboeking', function ($request, $response, $args) use($app) { $rekeningen = Rekeningen::getCurrentUserRekeningen(); return $this->renderer->render($response, 'overboeking.phtml', [ 'header' => Header::getHeaderData(), - 'rekeningen' => $rekeningen + 'rekeningen' => $rekeningen, + 'error' => $_GET['error'] ]); })->add(new Middleware()); @@ -45,7 +46,7 @@ class Overboeking try { $ibanhelper = new IBAN(); 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) { return Redirect::create($request, $response, "/overboeking?error=" . $e->getCode() . ""); } diff --git a/src/Application/Statistieken.php b/src/Application/Statistieken.php index f199d2e..e307a45 100644 --- a/src/Application/Statistieken.php +++ b/src/Application/Statistieken.php @@ -26,6 +26,7 @@ class Statistieken { $verloop = StatistiekenHelper::getSaldoverloop(30, $args['rekeningnummer']); return $this->renderer->render($response, "statistieken.phtml", [ "header" => Header::getHeaderData(), + "rekeningnr" => $args['rekeningnummer'], "statistieken" => [ "x-as" => $verloop['x-as'], "y-as" => $verloop['y-as'] diff --git a/src/Application/Transacties.php b/src/Application/Transacties.php index c4b5dd0..6a0e623 100644 --- a/src/Application/Transacties.php +++ b/src/Application/Transacties.php @@ -63,7 +63,8 @@ class Transacties { return $this->renderer->render($response, 'transacties.phtml', [ 'header' => Header::getHeaderData(), 'rekening' => $rekening, - 'transacties' => $returnArray + 'transacties' => $returnArray, + 'geslaagd' => $_GET['geslaagd'] ]); })->add(new Auth\Middleware()); } diff --git a/templates/overboeking.phtml b/templates/overboeking.phtml index f3878b4..41e94c2 100644 --- a/templates/overboeking.phtml +++ b/templates/overboeking.phtml @@ -1,55 +1,61 @@ - + + +
-
-
-
- -
- -
-
-
- -
- -
-
-
-
-
-
- -
-
-
-
-
-
-
- -
- -
-
-
-
-
-
-
- -
-
-
-
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+ +
+
+
+
diff --git a/templates/statistieken.phtml b/templates/statistieken.phtml index 3b30d80..933ed79 100644 --- a/templates/statistieken.phtml +++ b/templates/statistieken.phtml @@ -1,4 +1,5 @@ +Terug