<?php
# Hier werden die Anfragen vom Javascript verarbeitet und die
# Datenbank bedient

include '../../../config_stern.php';

$table_STA = 'StatistikJahre';
$table_STG = 'StatistikGesamt';


function getFromDbase($db, $query, $single) {
    $result = mysqli_query($db,$query)  or die (mysqli_error($db));
    $erg = array();
    if(mysqli_num_rows($result)) {
        while($row = mysqli_fetch_assoc($result)) {
            $erg[] = $row;
        }
    }
    if($single == true) {
        return ($erg[0]);
    } else {
        return($erg);
    }
}

function cudDbase($db, $query) {
    return(mysqli_query($db,$query) or die (mysqli_error($db)));
}

// Ein Record holen mit dem Datum/Jahr $sel von der Tabelle $table holen und komplett übermitteln
function getOneRecord($db,$sel,$gesamt)  {
    global $table_STG;
    global $table_STA;
    
    if ( $gesamt == false) {
        $query = "select * from $table_STA where datum = '$sel'";
    } else {
        $query = "select * from $table_STG where jahr = '$sel'";
    }
    return(getFromDbase($db,$query,true));
}

// Alle Records von der übergebebn Tabell holen und übergeben
function getRecords($db, $table) {
        
    $query = "select * from $table";
    $rows = getFromDbase($db, $query, false);
    return $rows;
}

function getLastDate($db) {
    global $table_STA;
    
    $response = new stdClass();
    $query = "select max(year(datum)) as lastYear from $table_STA";
    $rows = getFromDbase($db, $query, true);
    $lastYear = $rows['lastYear'];
    $query = "select * from $table_STA where year(datum) = '$lastYear'";
    $rows = getFromDbase($db, $query, false);
    $response->lastYear = $lastYear;
    $response->fullYear = $rows;
    return  $response;
}

function getSum($db,$w) {
    global $table_STG;
    
    if ($w == 'Besucher') {
        $query = "select sum(besucher) as sum from $table_STG";
    } else {
        $query = "select sum(aktivitaeten) as sum from $table_STG";
    }
    $rows = getFromDbase($db, $query, true);
    return  $rows['sum'];
}

function  getGesamt($db) {
    global $table_STG;

    $response = new stdClass();
    
    $response->data = getRecords($db,$table_STG);
    $response->lastDate = getLastDate($db);
    $response->sumB = getSum($db,'Besucher');
    $response->sumA = getSum($db,'Aktivi');
    return $response;
}    

function getYearList($db) {
    global $table_STA;
    $query = "select year(datum),count(besucherNormal) from $table_STA group by year(datum) order by year(datum) desc";
    $rows = getFromDbase($db, $query, false);
    $erg = array();
    for ($i=0; $i<count($rows); $i++) {
        $erg[$i] = $rows[$i]['year(datum)'];
    }
    return $erg;
}

function  getJahr($db,$jahr) {
    global $table_STA;
    global $table_STG;

    $response = new stdClass();
    $query = "select * from $table_STA where YEAR(datum) = $jahr order by datum";
    $response->data = getFromDbase($db, $query, false);

    $query = "select (sum(besucherToT)+sum(besucherSonder)+sum(besucherNormal)) as total from $table_STA where YEAR(datum) = $jahr";
    $row = getFromDbase($db, $query, true);
    $response->sumB = $row['total'];
    
    $query = "select (sum(fuehrungen)+sum(techdienst)+sum(beobachtungen)) as total from $table_STA where YEAR(datum) = $jahr";
    $row = getFromDbase($db, $query, true);
    $response->sumA = $row['total'];

    $query = "select sum(beozeit), sum(beotage) from $table_STA where YEAR(datum) = $jahr";
    $row = getFromDbase($db, $query, true);
    $response->sumBZ = $row['sum(beozeit)'];
    $response->sumBT = $row['sum(beotage)'];

    $query = "select bemerkung from $table_STG where jahr = $jahr";
    $row = getFromDbase($db, $query, true);
    $response->bemG = $row['bemerkung'];

    return $response;
}

function createORupdateEntry($db, $post, $gesamt) {
    global $table_STG;
    global $table_STA;
    if ($gesamt == true) {
        $inhalt = getOneRecord($db, $post['jahr'],true);
//         echo '#';
//         print_r($post);
//         print_r($inhalt);
//         echo "#";
        if ($inhalt == null) {                      // Insert !!
            $query = "insert into $table_STG (aktivitaeten, besucher, bemerkung, jahr)" .
            " values ('" . $post['suma'] .
            "','" .$post['sumb'] .
            "','" .$post['bemG'] .
            "','" .$post['jahr'] .
            "')";
        } else {
            $query = "update $table_STG set ".
                "aktivitaeten='" . $post['suma'] .
                "',besucher='" .$post['sumb'] .
                "',bemerkung='" .$post['bemG'] .
                "' where jahr='" . $post['jahr'] ."'";
            "')";
        }
        $ret = cudDBase($db,$query);
        if ($ret == true) {
            return array('datum' => $post['jahr']);         // Wenn OK, das Datum zurückgeben
        }
    } else {
        $inhalt = getOneRecord($db, $post['datum'], false);
        if ($inhalt == null) {                      // Insert !!
            $query = "insert into $table_STA (fuehrungen, beobachtungen, techdienst, besucherNormal, besucherSonder, besucherToT, bemerkung, datum, beoZeit, beoTage)" .
            " values ('" . $post['fueh'] .
            "','" .$post['beob'] .
            "','" .$post['tech'] .
            "','" .$post['besN'] .
            "','" .$post['besS'] .
            "','" .$post['besT'] .
            "','" .$post['beme'] .
            "','" .$post['datum'] .
            "','" .$post['beoZ'] .
            "','" .$post['beoT'] .
            "')";
        } else {
            $query = "update $table_STA set ".
            "fuehrungen='" . $post['fueh'] .
            "',beobachtungen ='" .$post['beob'] .
            "',techdienst='" .$post['tech'] .
            "',besucherNormal='" .$post['besN'] .
            "',besucherSonder='" .$post['besS'] .
            "',besucherToT='" .$post['besT'] .
            "',bemerkung='" .$post['beme'] .
            "',beoZeit='" .$post['beoZ'] .
            "',beoTage='" .$post['beoT'] .
            "' where datum='" . $post['datum'] ."'";
        }
        $ret = cudDBase($db,$query);
        if ($ret == true) {
            return array('datum' => $post['datum']);         // Wenn OK, das Datum zurückgeben
        }
    }
    return "# Fehler beim Schreiben der Daten !#";      // Andernfalls Fehlermeldung bringen
}

function deleteEntry($db, $id, $gesamt) {
    global $table_STG;
    global $table_STA;
    $query = "delete from " . ($gesamt==true) ? $table_STG : $table_STA . "  where id='$id'";
    return(cudDbase($db, $query));
}


// Hier gehts dann los:
// Alle Paramater aus dem Ajax-Call auslesen
// Mögliche Aufrufe:
/*
 * cmd=GET param=ID id=5					bringt das eine Record mit ID=5
 * cmd=GET param= staus=offen			bringt ALLE records mit stautus='offen' in zeitlich absteigender Reihenfoleg
 */

$erg = "";
$cmd = $_GET["cmd"];
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $cmd = $_POST["cmd"];
}

/*
 $x = "# ";
 foreach ($_POST as $key => $value) {
 $x = $x . $key . "  " . $value . "\n";
 }
 $x = $x . '# ';
 echo $x;
 */

switch ($cmd) {
    case 'GET_ONE_A':
        $erg = getOneRecord($db, $_GET["datum"],false);
        $ret = getOneRecord($db, substr($_GET["datum"],0,4),true);
        $erg['bemG'] = $ret['bemerkung'];
        break;
    case 'GET_ONE_G':
        $erg = getOneRecord($db, $_GET["jahr"],true);
        break;
    case 'GET_ALL_A':
        $erg = getJahr($db, $_GET["jahr"]);
        break;
    case 'GET_ALL_G':
        $erg = getGesamt($db);
        break;
    case 'GET_YEARS':
        $erg = getYearList($db);
        break;
    case 'CRUP_A':
        $erg = createORupdateEntry($db, $_POST['toInsert'], false);
        break;
    case 'CRUP_G':
        $erg = createORupdateEntry($db, $_POST['toInsert'], true);
        break;
    case 'DELETE_A':
        $erg = deleteEntry($db, $_GET['id'],false);
        break;
    case 'DELETE_G':
        $erg = deleteEntry($db, $_GET['id'],false);
        break;
        #	case 'CREATE':
        #		if($_POST['params'] == 'fuehrung') {
        #			$r = setFuehrung_findet_statt($db, $_POST['wert']);
        #		} else {
        #			createEntry($db, $_POST['entry']);
        #		}
        #		  $erg = 'OK';
        #		  break;
}
// header("Content-type: text/json;charset=utf-8");
echo json_encode($erg);

?>

