<?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
        ];
    }
}
