1
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

81 lines
2.7 KiB
PHP

<?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;
/**
* Description of Overboekingen
*
* @author Sjelm
*/
class Overboekingen
{
/**
*
* @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;
//TODO fatsoenlijke errorafhandeling en redirect
//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);
//TODO kijk of de rekening wel bestaat
if ($naarRekeningnr == $vanRekening['nr']) {
//error: afzender is hetzelfde als ontvanger
throw new Exception("De ontvangende rekening is hetzelfde als de verzendende");
}
//TODO geldigheid bedrag onderzoeken
//$bedragValue = (double) $bedrag;
if (strlen($omschrijving) > 40 && $type !== "id") {
//error: te lange omschrijving
throw new Exception("De omschrijving is te lang");
}
$db = Application::getContainer()->db;
$db->transacties->insert([
"van" => $vanRekening['nr'],
"naar" => $naarRekeningnr,
"bedrag" => $bedrag,
"type" => $type,
"omschrijving" => $omschrijving
]);
//TODO update saldo
//TODO Checken of het saldo van de rekening onder de 20 euro komt, dan doe je een mededeling via de berichthelper.
}
}