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.

57 lines
2.1 KiB
PHP

<?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("Y-m-d", strtotime("now") - $i * 86400);
}
$container = Application::getContainer();
$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)
->and("`datum` >= '" . date("Y-m-d", strtotime("now") - $dagen * 86400) . "'")->group("datum")->order("datum DESC");
$erbij = $db->transacties->select("datum, SUM(bedrag) as bedr")->where("naar", $rekeningNummer)
->group("datum")->order("datum DESC");
$huidigSaldo = (double)$saldo;
$vandaag = strtotime("now");
$yas = array_fill(0, $dagen + 1, 0);
foreach($eraf as $af){
$dag = strtotime($af['datum']);
$diff = floor(($vandaag - $dag)/86400);
if($diff <= $dagen){
$yas[$dagen - $diff] = (double)$af['bedr'];
}
}
foreach($erbij as $bij){
$dag = strtotime($bij['datum']);
$diff = floor(($vandaag - $dag)/86400);
if($diff <= $dagen){
$yas[$dagen - $diff + 1] -= (double)$bij['bedr'];
}else{
break;
}
}
$verandering = 0;
for($i = $dagen; $i >= 0; $i--){
$huidigSaldo += $verandering;
$verandering = $yas[$i];
$yas[$i] = $huidigSaldo;
}
return [
"x-as" => $xas,
"y-as" => $yas
];
}
}