Overboeking wijzigt saldo
This commit is contained in:
parent
fccd921545
commit
9983c63af3
@ -10,6 +10,7 @@ namespace Inforbank\Application\Helper;
|
|||||||
|
|
||||||
use Exception;
|
use Exception;
|
||||||
use Inforbank\Application;
|
use Inforbank\Application;
|
||||||
|
use Inforbank\Application\Helper\Rekeningen;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description of Overboekingen
|
* Description of Overboekingen
|
||||||
@ -18,6 +19,43 @@ use Inforbank\Application;
|
|||||||
*/
|
*/
|
||||||
class Overboekingen
|
class Overboekingen
|
||||||
{
|
{
|
||||||
|
|
||||||
|
private static function isValidFloat($bedrag){
|
||||||
|
$hasdecimal = false;
|
||||||
|
$decimals = 0;
|
||||||
|
$voorcijfers = 0;
|
||||||
|
for($i = 0; $i < strlen($bedrag); $i++){
|
||||||
|
$char = substr($bedrag, $i, 1);
|
||||||
|
$ascii = ord($char);
|
||||||
|
if($hasdecimal){
|
||||||
|
if($char === "." || $char === ","){
|
||||||
|
//Twee komma's
|
||||||
|
return false;
|
||||||
|
}else if($ascii >= 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 $van De rekening waar het bedrag vanaf wordt gehaald
|
||||||
@ -29,9 +67,7 @@ class Overboekingen
|
|||||||
public static function createOverboeking($van, $naar, $bedrag, $omschrijving, $type)
|
public static function createOverboeking($van, $naar, $bedrag, $omschrijving, $type)
|
||||||
{
|
{
|
||||||
$rekeningen = Rekeningen::getCurrentUserRekeningen();
|
$rekeningen = Rekeningen::getCurrentUserRekeningen();
|
||||||
|
|
||||||
$vanRekening = false;
|
$vanRekening = false;
|
||||||
//TODO fatsoenlijke errorafhandeling en redirect
|
|
||||||
//Controleer of de rekening wel van de ingelogde klant is
|
//Controleer of de rekening wel van de ingelogde klant is
|
||||||
foreach ($rekeningen as $rek) {
|
foreach ($rekeningen as $rek) {
|
||||||
if ($rek['iban'] === $van) {
|
if ($rek['iban'] === $van) {
|
||||||
@ -52,20 +88,37 @@ class Overboekingen
|
|||||||
throw new Exception("U kunt geen overboeking naar een andere bank doen");
|
throw new Exception("U kunt geen overboeking naar een andere bank doen");
|
||||||
}
|
}
|
||||||
$naarRekeningnr = $ibanHelper->getRekeningNummer($naar);
|
$naarRekeningnr = $ibanHelper->getRekeningNummer($naar);
|
||||||
//TODO kijk of de rekening wel bestaat
|
|
||||||
|
//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']) {
|
if ($naarRekeningnr == $vanRekening['nr']) {
|
||||||
//error: afzender is hetzelfde als ontvanger
|
//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");
|
||||||
}
|
}
|
||||||
|
if(!Overboekingen::isValidFloat($bedrag)){
|
||||||
|
throw new Exception("Geef als bedrag een getal op met maximaal 9 cijfers voor en 2 na de komma");
|
||||||
//TODO geldigheid bedrag onderzoeken
|
}
|
||||||
//$bedragValue = (double) $bedrag;
|
|
||||||
|
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") {
|
if (strlen($omschrijving) > 40 && $type !== "id") {
|
||||||
//error: te lange omschrijving
|
//error: te lange omschrijving
|
||||||
throw new Exception("De omschrijving is te lang");
|
throw new Exception("De omschrijving is te lang");
|
||||||
}
|
}
|
||||||
$db = Application::getContainer()->db;
|
//Voeg transactie toe
|
||||||
$db->transacties->insert([
|
$db->transacties->insert([
|
||||||
"van" => $vanRekening['nr'],
|
"van" => $vanRekening['nr'],
|
||||||
"naar" => $naarRekeningnr,
|
"naar" => $naarRekeningnr,
|
||||||
@ -74,7 +127,21 @@ class Overboekingen
|
|||||||
"omschrijving" => $omschrijving
|
"omschrijving" => $omschrijving
|
||||||
]);
|
]);
|
||||||
|
|
||||||
//TODO update saldo
|
//Wijzig saldo
|
||||||
//TODO Checken of het saldo van de rekening onder de 20 euro komt, dan doe je een mededeling via de berichthelper.
|
$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");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ class Overboeking
|
|||||||
Overboekingen::createOverboeking($ibanhelper->getIBAN($van), $naar, $bedrag, $omschrijving, "bg");
|
Overboekingen::createOverboeking($ibanhelper->getIBAN($van), $naar, $bedrag, $omschrijving, "bg");
|
||||||
return Redirect::create($request, $response, "/rekeningen/$van");
|
return Redirect::create($request, $response, "/rekeningen/$van");
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
return Redirect::create($request, $response, "/overboeking?$e");
|
return Redirect::create($request, $response, "/overboeking?error=" . $e->getMessage() . "");
|
||||||
}
|
}
|
||||||
})->add(new Middleware());
|
})->add(new Middleware());
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user