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.

103 lines
3.9 KiB
PHP

<?php
/**
* Informatica Eindproject D4p
* 6in3, Stedelijk Gymnasium Nijmegen
* Docent: Hans de Wolf
*
* ==================
*
* Daniel Boutros,
* Christiaan Goossens,
* Jelmer Hinssen
*/
namespace Inforbank\Application;
use \Slim\App;
use Inforbank\Application\Auth\Middleware;
use Inforbank\Application\Helper\Header;
use Inforbank\Application\Helper\Idob\Transactie;
use Inforbank\Application\Helper\Idob\Client;
use Inforbank\Application\Helper\Rekeningen as RekeningHelper;
use Inforbank\Application\Helper\Berichten as BerichtenHelper;
use Inforbank\Application\Helper\Overboekingen;
use Inforbank\Application\Helper\Redirect;
use Inforbank\Application\Helper\IBAN;
class Idob
{
public function __construct(App $app)
{
/**
* Create the API route group
*/
$app->group('/idob', function () {
$this->get('/betalen', function ($request, $response, $args) {
$query = $request->getQueryParams();
$rekeningen = RekeningHelper::getCurrentUserRekeningen();
try {
$transactie = Transactie::getTransactie($query['trxid']);
$client = new Client($transactie['clientId']);
$naam = $client->getClientName();
} catch (\Exception $e) {
$transactie = false;
}
return $this->renderer->render($response, 'idob.phtml', [
'header' => Header::getHeaderData(),
'transactie' => $transactie,
'webwinkel' => $naam,
'rekeningen' => $rekeningen
]);
});
$this->get('/mislukt', function ($request, $response, $args) {
return $this->renderer->render($response, 'idobmislukt.phtml', [
'header' => Header::getHeaderData()
]);
});
$this->post('/betalen', function ($request, $response, $args) {
$query = $request->getQueryParams();
$post = $request->getParsedBody();
$van = $post['van'];
try {
$transactie = Transactie::getTransactie($query['trxid']);
$client = new Client($transactie['clientId']);
$redirectUri = $client->getClientRedirectURI();
$rekening = $client->getClientRekening();
$naam = $client->getClientName();
try {
/**
* All set to pay!
*/
// Do overboeking
Overboekingen::createOverboeking(IBAN::getIBAN($van), IBAN::getIBAN($rekening), $transactie['amount'], "Betaling aan " . $naam . " voor transactie " . $transactie['reference'], "id");
// Do Status update
Transactie::setTransactionStatus($transactie['transactieId'], 2);
// Do bericht
BerichtenHelper::newBericht($this->auth->getUserID(), $naam, "Betaling met transactiereferentie " . $transactie['reference'] . " gelukt.");
$response = $response->withStatus(302);
$response = $response->withHeader('Location', $redirectUri . "?trxid=".$transactie['transactieId']);
return $response;
} catch (\Exception $e) {
$response = $response->withStatus(302);
$response = $response->withHeader('Location', $redirectUri . "?error=".$e->getMessage());
return $response;
}
} catch (\Exception $e) {
return Redirect::create($request, $response, "/idob/mislukt");
}
});
})->add(new Middleware());
}
}