Statistieken
This commit is contained in:
@ -1,61 +1,60 @@
|
||||
<?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;
|
||||
use Inforbank\Application\Helper\Rekeningen;
|
||||
|
||||
/**
|
||||
* Description of Overboekingen
|
||||
*
|
||||
* @author Sjelm
|
||||
*/
|
||||
class Overboekingen
|
||||
{
|
||||
|
||||
private static function isValidFloat($bedrag){
|
||||
class Overboekingen {
|
||||
|
||||
public static $EIGENAAR = 1;
|
||||
public static $IBAN = 2;
|
||||
public static $BANK = 3;
|
||||
public static $BESTAAN = 4;
|
||||
public static $ZELFDE = 5;
|
||||
public static $GETAL = 6;
|
||||
public static $POSITIEF = 7;
|
||||
public static $SALDO = 8;
|
||||
public static $OMSCHRIJVING = 9;
|
||||
|
||||
private static function isValidFloat($bedrag) {
|
||||
$hasdecimal = false;
|
||||
$decimals = 0;
|
||||
$voorcijfers = 0;
|
||||
for($i = 0; $i < strlen($bedrag); $i++){
|
||||
for ($i = 0; $i < strlen($bedrag); $i++) {
|
||||
$char = substr($bedrag, $i, 1);
|
||||
$ascii = ord($char);
|
||||
if($hasdecimal){
|
||||
if($char === "." || $char === ","){
|
||||
if ($hasdecimal) {
|
||||
if ($char === "." || $char === ",") {
|
||||
//Twee komma's
|
||||
return false;
|
||||
}else if($ascii >= ord("0") && $ascii <= ord("9")){
|
||||
} else if ($ascii >= ord("0") && $ascii <= ord("9")) {
|
||||
$decimals++;
|
||||
if($decimals > 2){
|
||||
if ($decimals > 2) {
|
||||
//Meer dan twee cijfers achter de komma
|
||||
return false;
|
||||
}
|
||||
}else{
|
||||
} else {
|
||||
//Ongeldig teken
|
||||
return false;
|
||||
}
|
||||
}else if($char === "." || $char === ","){
|
||||
} else if ($char === "." || $char === ",") {
|
||||
$hasdecimal = true;
|
||||
}else if($ascii >= ord("0") || $ascii <= ord("9")){
|
||||
} else if ($ascii >= ord("0") || $ascii <= ord("9")) {
|
||||
$voorcijfers++;
|
||||
if($voorcijfers > 9){
|
||||
if ($voorcijfers > 9) {
|
||||
//Te veel cijfers voor de komma
|
||||
return false;
|
||||
}
|
||||
}else{
|
||||
} else {
|
||||
//Ongeldig teken
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param IBAN $van De rekening waar het bedrag vanaf wordt gehaald
|
||||
@ -64,59 +63,50 @@ class Overboekingen
|
||||
* @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;
|
||||
}
|
||||
}
|
||||
public static function createOverboeking($van, $naar, $bedrag, $omschrijving, $type) {
|
||||
$vanRekening = Rekeningen::isEigenRekeningIBAN($van);
|
||||
if (!$vanRekening) {
|
||||
//error: rekening is niet van klant
|
||||
throw new Exception("U bent niet de eigenaar van deze rekening");
|
||||
throw new Exception("U bent niet de eigenaar van deze rekening", Overboekingen::$EIGENAAR);
|
||||
}
|
||||
$ibanHelper = new IBAN();
|
||||
if (!$ibanHelper->isValidIBAN($naar)) {
|
||||
//error: ongeldige iban
|
||||
throw new Exception("De IBAN van de ontvanger is ongeldig");
|
||||
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");
|
||||
throw new Exception("U kunt geen overboeking naar een andere bank doen", 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){
|
||||
if (count($naarRekening) !== 1) {
|
||||
//error: rekening bestaat niet
|
||||
throw new Exception("De ontvangende rekening bestaat niet");
|
||||
throw new Exception("De ontvangende rekening bestaat niet", Overboekingen::$BESTAAN);
|
||||
}
|
||||
foreach($naarRekening as $rekening){
|
||||
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");
|
||||
throw new Exception("De ontvangende rekening is hetzelfde als de verzendende", Overboekingen::$ZELFDE);
|
||||
}
|
||||
if(!Overboekingen::isValidFloat($bedrag)){
|
||||
throw new Exception("Geef als bedrag een getal op met maximaal 9 cijfers voor en 2 na de komma");
|
||||
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);
|
||||
}
|
||||
|
||||
if($bedrag <= 0){
|
||||
throw new Exception("Het bedrag moet positief zijn");
|
||||
|
||||
if ($bedrag <= 0) {
|
||||
throw new Exception("Het bedrag moet positief zijn", Overboekingen::$POSITIEF);
|
||||
}
|
||||
$bedragvalue = doubleval(str_replace(",", ".", $bedrag));
|
||||
if($bedragvalue > $vanRekening['saldo']){
|
||||
throw new Exception("Te laag saldo");
|
||||
if ($bedragvalue > $vanRekening['saldo']) {
|
||||
throw new Exception("Te laag saldo", Overboekingen::$SALDO);
|
||||
}
|
||||
if (strlen($omschrijving) > 40 && $type !== "id") {
|
||||
//error: te lange omschrijving
|
||||
throw new Exception("De omschrijving is te lang");
|
||||
throw new Exception("De omschrijving is te lang", Overboekingen::$OMSCHRIJVING);
|
||||
}
|
||||
//Voeg transactie toe
|
||||
$db->transacties->insert([
|
||||
@ -124,24 +114,26 @@ class Overboekingen
|
||||
"naar" => $naarRekeningnr,
|
||||
"bedrag" => $bedrag,
|
||||
"type" => $type,
|
||||
"omschrijving" => $omschrijving
|
||||
"omschrijving" => $omschrijving,
|
||||
"datum" => date("Y-m-d")
|
||||
]);
|
||||
|
||||
//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){
|
||||
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){
|
||||
if ($naarRekening[$naarid]['saldo'] + $bedragvalue > 9000000000) {
|
||||
Berichten::newBericht($naarRekening[$naarid]['klantid'], "De InforBank", "Uw saldo is te hoog");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user