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.
94 lines
3.3 KiB
PHP
94 lines
3.3 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Informatica Eindproject D4p
|
|
* 6in3, Stedelijk Gymnasium Nijmegen
|
|
* Docent: Hans de Wolf
|
|
*
|
|
* ==================
|
|
*
|
|
* Daniel Boutros,
|
|
* Christiaan Goossens,
|
|
* Jelmer Hinssen
|
|
*/
|
|
|
|
namespace Inforbank\Application;
|
|
|
|
use Inforbank\Application;
|
|
use Inforbank\Application\Helper\IBAN;
|
|
use Inforbank\Application\Helper\Header;
|
|
use Inforbank\Application\Helper\Redirect;
|
|
use Inforbank\Application\Helper\Rekeningen;
|
|
use Slim\App;
|
|
|
|
class Overboeking
|
|
{
|
|
public function __construct(App $app)
|
|
{
|
|
$app->get('/overboeking', function ($request, $response, $args) {
|
|
$rekeningen = Rekeningen::getCurrentUserRekeningen();
|
|
return $this->renderer->render($response, 'overboeking.phtml', [
|
|
'header' => Header::getHeaderData(),
|
|
'rekeningen' => $rekeningen
|
|
]);
|
|
})->add(new Auth\Middleware());
|
|
|
|
$app->post('/overboeking', function ($request, $response, $args) {
|
|
$post = $request->getParsedBody();
|
|
$van = $post['van'];
|
|
$naar = $post['naar'];
|
|
$bedrag = $post['bedrag'];
|
|
$omschrijving = $post['omschrijving'];
|
|
|
|
$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['nr'] === $van) {
|
|
$vanRekening = $rek;
|
|
break;
|
|
}
|
|
}
|
|
if (!$vanRekening) {
|
|
//error: rekening is niet van klant
|
|
return Redirect::create($request, $response, "/eigenaar");
|
|
}
|
|
$ibanHelper = new IBAN();
|
|
if (!$ibanHelper->isValidIBAN($naar)) {
|
|
//error: ongeldige iban
|
|
return Redirect::create($request, $response, "/ongeldig");
|
|
} elseif (!($ibanHelper->getLand($naar) == "NL" && $ibanHelper->getBank($naar) === "INFO")) {
|
|
//error: andere bank
|
|
return Redirect::create($request, $response, "/andere");
|
|
}
|
|
$naarRekeningnr = $ibanHelper->getRekeningNummer($naar);
|
|
//TODO kijk of de rekening wel bestaat
|
|
if ($naarRekeningnr == $vanRekening['nr']) {
|
|
//error: afzender is hetzelfde als ontvanger
|
|
return Redirect::create($request, $response, "/zelfde");
|
|
}
|
|
|
|
|
|
//TODO geldigheid bedrag onderzoeken
|
|
//$bedragValue = (double) $bedrag;
|
|
//TODO omschrijving in database stoppen
|
|
if (strlen($omschrijving) > 40) {
|
|
//error: te lange omschrijving
|
|
}
|
|
$db = Application::getContainer()->db;
|
|
$db->transacties->insert([
|
|
"van" => $vanRekening['nr'],
|
|
"naar" => $naarRekeningnr,
|
|
"bedrag" => $bedrag,
|
|
"type" => "bg" //bg staat voor internetbankieren
|
|
]);
|
|
|
|
//TODO update saldo
|
|
//TODO Checken of het saldo van de rekening onder de 20 euro komt, dan doe je een mededeling via de berichthelper.
|
|
return Redirect::create($request, $response, "/");
|
|
})->add(new Auth\Middleware());
|
|
}
|
|
}
|