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.

59 lines
2.0 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
];
}
}