1
0

Statistieken

This commit is contained in:
JelmerHinssen
2017-04-02 21:04:14 +02:00
parent ad9f70dc32
commit 184dbd5b4e
12 changed files with 241 additions and 74 deletions

View File

@ -1,61 +1,60 @@
<?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;
use Inforbank\Application\Helper\Rekeningen;
/**
* Description of Overboekingen
*
* @author Sjelm
*/
class Overboekingen
{
private static function isValidFloat($bedrag){
class Overboekingen {
public static $EIGENAAR = 1;
public static $IBAN = 2;
public static $BANK = 3;
public static $BESTAAN = 4;
public static $ZELFDE = 5;
public static $GETAL = 6;
public static $POSITIEF = 7;
public static $SALDO = 8;
public static $OMSCHRIJVING = 9;
private static function isValidFloat($bedrag) {
$hasdecimal = false;
$decimals = 0;
$voorcijfers = 0;
for($i = 0; $i < strlen($bedrag); $i++){
for ($i = 0; $i < strlen($bedrag); $i++) {
$char = substr($bedrag, $i, 1);
$ascii = ord($char);
if($hasdecimal){
if($char === "." || $char === ","){
if ($hasdecimal) {
if ($char === "." || $char === ",") {
//Twee komma's
return false;
}else if($ascii >= ord("0") && $ascii <= ord("9")){
} else if ($ascii >= ord("0") && $ascii <= ord("9")) {
$decimals++;
if($decimals > 2){
if ($decimals > 2) {
//Meer dan twee cijfers achter de komma
return false;
}
}else{
} else {
//Ongeldig teken
return false;
}
}else if($char === "." || $char === ","){
} else if ($char === "." || $char === ",") {
$hasdecimal = true;
}else if($ascii >= ord("0") || $ascii <= ord("9")){
} else if ($ascii >= ord("0") || $ascii <= ord("9")) {
$voorcijfers++;
if($voorcijfers > 9){
if ($voorcijfers > 9) {
//Te veel cijfers voor de komma
return false;
}
}else{
} else {
//Ongeldig teken
return false;
}
}
return true;
}
/**
*
* @param IBAN $van De rekening waar het bedrag vanaf wordt gehaald
@ -64,59 +63,50 @@ class Overboekingen
* @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;
//Controleer of de rekening wel van de ingelogde klant is
foreach ($rekeningen as $rek) {
if ($rek['iban'] === $van) {
$vanRekening = $rek;
break;
}
}
public static function createOverboeking($van, $naar, $bedrag, $omschrijving, $type) {
$vanRekening = Rekeningen::isEigenRekeningIBAN($van);
if (!$vanRekening) {
//error: rekening is niet van klant
throw new Exception("U bent niet de eigenaar van deze rekening");
throw new Exception("U bent niet de eigenaar van deze rekening", Overboekingen::$EIGENAAR);
}
$ibanHelper = new IBAN();
if (!$ibanHelper->isValidIBAN($naar)) {
//error: ongeldige iban
throw new Exception("De IBAN van de ontvanger is ongeldig");
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");
throw new Exception("U kunt geen overboeking naar een andere bank doen", 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){
if (count($naarRekening) !== 1) {
//error: rekening bestaat niet
throw new Exception("De ontvangende rekening bestaat niet");
throw new Exception("De ontvangende rekening bestaat niet", Overboekingen::$BESTAAN);
}
foreach($naarRekening as $rekening){
foreach ($naarRekening as $rekening) {
$naarid = $rekening['id'];
}
if ($naarRekeningnr == $vanRekening['nr']) {
//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", Overboekingen::$ZELFDE);
}
if(!Overboekingen::isValidFloat($bedrag)){
throw new Exception("Geef als bedrag een getal op met maximaal 9 cijfers voor en 2 na de komma");
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);
}
if($bedrag <= 0){
throw new Exception("Het bedrag moet positief zijn");
if ($bedrag <= 0) {
throw new Exception("Het bedrag moet positief zijn", Overboekingen::$POSITIEF);
}
$bedragvalue = doubleval(str_replace(",", ".", $bedrag));
if($bedragvalue > $vanRekening['saldo']){
throw new Exception("Te laag saldo");
if ($bedragvalue > $vanRekening['saldo']) {
throw new Exception("Te laag saldo", Overboekingen::$SALDO);
}
if (strlen($omschrijving) > 40 && $type !== "id") {
//error: te lange omschrijving
throw new Exception("De omschrijving is te lang");
throw new Exception("De omschrijving is te lang", Overboekingen::$OMSCHRIJVING);
}
//Voeg transactie toe
$db->transacties->insert([
@ -124,24 +114,26 @@ class Overboekingen
"naar" => $naarRekeningnr,
"bedrag" => $bedrag,
"type" => $type,
"omschrijving" => $omschrijving
"omschrijving" => $omschrijving,
"datum" => date("Y-m-d")
]);
//Wijzig saldo
$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){
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){
if ($naarRekening[$naarid]['saldo'] + $bedragvalue > 9000000000) {
Berichten::newBericht($naarRekening[$naarid]['klantid'], "De InforBank", "Uw saldo is te hoog");
}
}
}

View File

@ -44,4 +44,30 @@ class Rekeningen
return $returnArray;
}
public static function isEigenRekeningIBAN($iban){
$rekeningen = Rekeningen::getCurrentUserRekeningen();
$vanRekening = false;
//Controleer of de rekening wel van de ingelogde klant is
foreach ($rekeningen as $rek) {
if ($rek['iban'] === $iban) {
$vanRekening = $rek;
break;
}
}
return $vanRekening;
}
public static function isEigenRekeningnr($nr){
$rekeningen = Rekeningen::getCurrentUserRekeningen();
$vanRekening = false;
//Controleer of de rekening wel van de ingelogde klant is
foreach ($rekeningen as $rek) {
if ($rek['nr'] === $nr) {
$vanRekening = $rek;
break;
}
}
return $vanRekening;
}
}

View File

@ -0,0 +1,47 @@
<?php
namespace Inforbank\Application\Helper;
use Exception;
use Inforbank\Application;
class Statistieken {
public static $EIGENAAR = 1;
public static function getSaldoverloop($dagen, $rekeningNummer){
if(!Rekeningen::isEigenRekeningnr($rekeningNummer)){
throw new Exception("Dit is niet uw eigen rekening", Statistieken::$EIGENAAR);
}
$xas = array();
for($i = $dagen; $i >= 0; $i--){
$xas[] = date("d M", strtotime("-$i day"));
}
$container = Application::getContainer();
$user = $container->auth->getUserID();
$db = $container->db;
$saldo = $db->rekeningen->where("rekeningnr", $rekeningNummer)[array("rekeningnr" => $rekeningNummer)]['saldo'];
$eraf = $db->transacties->select("datum, SUM(bedrag) as bedr")->where("van", $rekeningNummer)
->group("datum")->order("datum ASC, id DESC");
$erbij = $db->transacties->select("datum, SUM(bedrag) as bedr")->where("naar", $rekeningNummer)
->group("datum")->order("datum ASC, id DESC");
$huidigSaldo = (double)$saldo;
$yas = array($huidigSaldo);
for($i = 1; $i <= $dagen; $i++){
$af = (double)$eraf[array("datum" => date("Y-m-d", strtotime("-" . $i . " day")))]['bedr'];
$bij = (double)$erbij[array("datum" => date("Y-m-d", strtotime("-" . $i . " day")))]['bedr'];
if(!isset($af)){
$af = 0;
}
if(!isset($bij)){
$bij = 0;
}
$huidigSaldo += $af;
$huidigSaldo -= $bij;
array_unshift($yas, $huidigSaldo);
}
return [
"x-as" => $xas,
"y-as" => $yas
];
}
}