Error afhandeling
This commit is contained in:
		| @@ -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"); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -18,6 +18,9 @@ use Inforbank\Application; | ||||
|  | ||||
| class Rekeningen | ||||
| { | ||||
|     public static $BETAALREKENING = 1; | ||||
|     public static $SPAARREKENING = 2; | ||||
|      | ||||
|     public static function getCurrentUserRekeningen() | ||||
|     { | ||||
|         $container = Application::getContainer(); | ||||
|   | ||||
| @@ -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++){ | ||||
|   | ||||
| @@ -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() . ""); | ||||
|             } | ||||
|   | ||||
| @@ -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'] | ||||
|   | ||||
| @@ -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()); | ||||
|     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user