|
|
|
@ -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");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|