= ord("0") && $ascii <= ord("9")){ $decimals++; if($decimals > 2){ //Meer dan twee cijfers achter de komma return false; } }else{ //Ongeldig teken return false; } }else if($char === "." || $char === ","){ $hasdecimal = true; }else if($ascii >= ord("0") || $ascii <= ord("9")){ $voorcijfers++; if($voorcijfers > 9){ //Te veel cijfers voor de komma return false; } }else{ //Ongeldig teken return false; } } return true; } /** * * @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; //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); //Controleer of de rekening bestaat $db = Application::getContainer()->db; $naarRekening = $db->rekeningen->where("rekeningnr", $naarRekeningnr); if(count($naarRekening) !== 1){ //error: rekening bestaat niet throw new Exception("De ontvangende rekening bestaat niet"); } foreach($naarRekening as $rekening){ $naarid = $rekening['id']; } if ($naarRekeningnr == $vanRekening['nr']) { //error: afzender is hetzelfde als ontvanger throw new Exception("De ontvangende rekening is hetzelfde als de verzendende"); } if(!Overboekingen::isValidFloat($bedrag)){ throw new Exception("Geef als bedrag een getal op met maximaal 9 cijfers voor en 2 na de komma"); } if($bedrag <= 0){ throw new Exception("Het bedrag moet positief zijn"); } $bedragvalue = doubleval(str_replace(",", ".", $bedrag)); if($bedragvalue > $vanRekening['saldo']){ throw new Exception("Te laag saldo"); } if (strlen($omschrijving) > 40 && $type !== "id") { //error: te lange omschrijving throw new Exception("De omschrijving is te lang"); } //Voeg transactie toe $db->transacties->insert([ "van" => $vanRekening['nr'], "naar" => $naarRekeningnr, "bedrag" => $bedrag, "type" => $type, "omschrijving" => $omschrijving ]); //Wijzig saldo $db->rekeningen->where("rekeningnr", $vanRekening['nr'])->update([ "saldo" => $vanRekening['saldo'] - $bedragvalue ]); $naarRekening[$naarid]->update([ "saldo" => $naarRekening[$naarid]['saldo'] + $bedragvalue ]); //Stuur bericht bij laag saldo if($vanRekening['saldo'] - $bedragvalue < 20){ Berichten::newBericht(Application::getContainer()->auth->getUserID(), "De InforBank", "U heeft een laag saldo"); } //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"); } } }