<?php
require('fpdf153/fpdf.php');
if (!$startdate || !preg_match("/....-..-../", $startdate)) {
    $error = "Bitte geben Sie ein Startdatum an\n";
}
if (!$enddate || !preg_match("/....-..-../", $startdate)) {
    $error = "Bitte geben Sie ein Enddatum an\n";
}

if (!isset($error)) { 
    if ($group == 'u18') {
        $u18 = 1;
    } else {
        $u18 = 0;
    }
    if ($group == 'wechsler') {
        $agechange = 1;
    } else {
        $agechange = 0;
    }

    $startDate=$startdate;
    $endDate=$enddate;
    // versand: 1 = letter, 2 = email, 0 = kein Versand

    // Create Application Object
    $healthmiles = new healthmiles();

        print "Suche Teilnehmer mit Konto&auml;nderungen...<br/>\n";
        flush();
        /** Selektiere alle Teilnehmer mit Kontoänderungen zwischen 
         * startDate und endDate
         */
        $userIds = $healthmiles->getUsersWithAccountChanges($startDate,
                $endDate,$u18,$versand,$agechange,$plusnurverfaller);
        if ($nobalance) {
            print "Suche alle Teilnehmer ohne Konto&auml;nderungen..<br/>\n";
            /**
            * Selektiere alle Teilnehmer ohne Berücksichtigung der 
            */
            $userIdsAll = $healthmiles->getAllUsers($startDate,$endDate,
                    $u18,$versand, $agechange);

            /* Erstelle Teilmenge der Teilnehmer ohne Kontoaenderungen */
            $userIdsNoChanges = array();
            for ($i =0; $i < count($userIdsAll); $i++) {
                if (! in_array($userIdsAll[$i],$userIds)) {
                    array_push($userIdsNoChanges,$userIdsAll[$i]);
                }
            }
            /**
             * Benutze obige Teilmenge, wenn 'keine Kontoänderung' ausgewählt wurde
             */
            $userIds = $userIdsNoChanges;
        }
        $userIds = $healthmiles->filterActiveUsers($userIds);

        print "<hr/>";
        print "Generiere Anschreiben fuer " . sizeof($userIds)." Teilnehmer.<br />";
        print "Bitte einen Moment Geduld.<br />";
        print "<hr/>";
        flush();

        $group = $u18?'U18':'O18';
        $group = $agechange?'Wechsler':$group;

        $loggedIn->log('kontoauszug erstellen', $loggedIn->userId);
        if ($versand == 0) { // Kein Letter
            $type = 'noletter';
        }
        if ($versand == 1) { // Brief
            $type = 'letter';
        }
        if ($versand == 2) { // Email
            $type = 'email';
        } 
        $balance = '';
        if ($nobalance) {
          $balance= 'KeinAuszug';
        }
        $loggedIn->log("Kontoauszug $type $group $startDate bis $endDate $balance", $loggedIn->userId);
        $logfile = $group . '_' . $type . '.csv';
        if ($balance != '') {
            $logfile = $group . '_' . $type . '_' . $balance . '.csv';
        }
        $kontoauszug = new kontoauszug($group, $type,$userIds,$startDate,$endDate);
        $kontoauszug->createpdfs();
        // include("kontoauszug_$type$group$balance.php");
        writecsv($userIds,$logfile,$startDate,$endDate);
 
    // Schreibe Log
    $auszugname = $kontoauszug->auszugname;
    $auszugversand = new auszugversand();
    $auszugversand->auszugname = $auszugname;
    $auszugversand->startdate = $startDate;
    $auszugversand->enddate = $endDate;
    $auszugversand->u18 = $u18;
    $auszugversand->wechsler = $agechange;
    $auszugversand->versand = $versand;
    $auszugversand->plusnurverfaller = $plusnurverfaller;
    $auszugversand->nobalance = $nobalance;
    $auszugversand->anzahl = sizeof($userIds);
    $auszugversand->logauszug();

    print "--------------------------------------------------------------\n<br />";
    print sizeof($userIds)." Kontoauszuege verarbeitet: $auszugname.\n<br />";
    print "--------------------------------------------------------------\n<br />";
    print " VIELEN DANK FUER IHRE GEDULD \n<br />";
    print "--------------------------------------------------------------\n<br />";

}

function writecsv($userIds, $logfile, $startDate, $endDate) {
    global $exportpath;
    $outputname = $exportpath."/kontoauszug/".$logfile;
    $fout = fopen ($outputname, 'w');
    foreach ($userIds as $userId) {
        List($year,$month,$day) = explode('-', $endDate);
        $refDate = "$year-$month-15";
        $VerfallDatum1 = date('01.m.Y',strtotime('+1 months',strtotime($refDate)));
        $VerfallDatum2 = date('01.m.Y',strtotime('+2 months',strtotime($refDate)));
        $VerfallDatum3 = date('01.m.Y',strtotime('+3 months',strtotime($refDate)));
        $user = new user(0,$userId);
        $konto = new konto($userId);
        $invalidpoints = $konto->calcinvalidatenext($endDate);
        fputs($fout, $user->versnummer . ';'. $user->rechtskreis . ';' . $invalidpoints[0] . ';' .$invalidpoints[1] . ';' .$invalidpoints[2] . "\n");
    }
    fclose($fout);
}
