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

include '../../../config_stern.php';
include '../../../phpmailer/dosendmail.php';


// Holen der Einträge in der anmelde-Datenbank für den selektierten Tag
// Parameter
//      $special  -> was muss geholt werden
//      $date -> Datum, für das geholt wird
//
// Return:
//      Array mit den Einträgen
function getAnmeldungenNew($special, $date)
{
    global $db, $table;
    $retur = [];
    $retur['error'] = false;
    $retur['errortext'] = '';
    $erg = array();
    if ($special == 'total') {
        $sql_stmt = "SELECT * FROM $table";
    } else if ($special == 'all') {
        $sql_stmt = "SELECT * FROM $table WHERE name != '-'";
    } else if ($special == 'abgesagt') {
        $sql_stmt = "SELECT * FROM $table WHERE abgesagt=1 AND name != '-'";
    } else if ($special == 'nichtda') {
        $sql_stmt = "SELECT * FROM $table WHERE DATE_ADD(DATE(fdatum),INTERVAL 1 DAY)<=DATE(NOW()) AND teilgenommen = 0 AND name != '-'";
    } else if ($special == 'zualt') {
        $sql_stmt = "SELECT * FROM $table WHERE DATE_ADD(DATE(fdatum),INTERVAL $date DAY)<=DATE(NOW()) AND name != '-'";
    } else if ($special == 'alllater'){
        $sql_stmt = "SELECT * FROM $table WHERE fdatum > '$date' AND name != '-' ORDER BY fdatum";
    } else if ($special == 'normal'){
        $sql_stmt = "SELECT * FROM $table WHERE fdatum = '$date'";
    }  else {
        $retur['error'] = 'false';
        $retur['errortext'] = 'Falsches SELECT Statement!';
        $retur['data'] = [];
        return $retur;
    }
    $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db));
    while ($row = mysqli_fetch_assoc($result)) {
        foreach($row as $key => $value) {
            $entry[$key] = $value;
        }
        $erg[] = $entry;
    }
    $retur['data'] = $erg;
    return $retur;
}

// Holen der Einträge in der anmelde-Datenbank für den selektierten Tag
// Parameter
//      $special  -> was muss geholt werden
//      $date -> Datum, für das geholt wird
//
// Return:
//      Array mit den Einträgen
function getSonderNew($special, $date)
{
    global $db, $table;
    $retur = [];
    $retur['error'] = false;
    $retur['errortext'] = '';
    $erg = array();
/*    if ($special == 'total') {
        $sql_stmt = "SELECT * FROM anmeldungen";
    } else if ($special == 'all') {
        $sql_stmt = "SELECT * FROM anmeldungen WHERE name != '-'";
    } else if ($special == 'abgesagt') {
        $sql_stmt = "SELECT * FROM anmeldungen WHERE abgesagt=1 AND name != '-'";
    } else if ($special == 'nichtda') {
        $sql_stmt = "SELECT * FROM anmeldungen WHERE DATE_ADD(DATE(fdatum),INTERVAL 1 DAY)<=DATE(NOW()) AND teilgenommen = 0 AND name != '-'";
    } else if ($special == 'zualt') {
        $sql_stmt = "SELECT * FROM anmeldungen WHERE DATE_ADD(DATE(fdatum),INTERVAL $date DAY)<=DATE(NOW()) AND name != '-'";
    } else
*/  if ($special == 'alllater'){
        $sql_stmt = "SELECT * FROM SoFue2 WHERE wtermin > '$date'  ORDER BY wtermin";
//    } else if ($special == 'normal'){
//        $sql_stmt = "SELECT * FROM anmeldungen WHERE fdatum = '$date'";
    }  else {
        $retur['error'] = 'false';
        $retur['errortext'] = 'Falsches SELECT Statement!';
        $retur['data'] = [];
        return $retur;
    }
    $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db));
    while ($row = mysqli_fetch_assoc($result)) {
        foreach($row as $key => $value) {
            $entry[$key] = $value;
        }
        $erg[] = $entry;
    }
    $retur['data'] = $erg;
    return $retur;
}

// Holen der Einträge in der anmelde-Datenbank für den selektierten Tag
// Parameter
//      $date -> so für dieses Datum die Einträge holen
// Retunrn:
//      Array mit den Einträgen
function getAnmeldungen($date)
{
    global $db, $table;
    $erg = array();
    $sql_stmt = "SELECT * FROM $table WHERE fdatum = '$date'";
    $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db));
    while ($row = mysqli_fetch_assoc($result)) {
        foreach($row as $key => $value) {
            $entry[$key] = $value;
        }
        $erg[] = $entry;
    }
    return $erg;
}

// Daten eines Teilnehmers abholen
// Parameter:
//      $id:        Teilnehmer - ID
// Return:
//      Dict mit allen Daten des Teilnehmers
function getTeilnehmer($id)
{
    global $db, $table;
    $erg = array();
    $sql_stmt = "SELECT * FROM $table WHERE id='$id'";
    $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db));
    while ($row = mysqli_fetch_assoc($result)) {
        foreach ($row as $key => $value) {
            $entry[$key] = $value;
        }
        $erg[] = $entry;
    }
    return $erg;
}

// Daten eines Teilnehmers abholen
// Parameter:
//      $name:        Name oder Vorname des Teilnehmers
// Return:
//      Dict mit allen Daten des Teilnehmers
function getTeilnehmerByName($name)
{
    global $db, $table;
    $erg = array();
    $sql_stmt = "SELECT * FROM $table WHERE name ='$name' || vorname = '$name'";
    $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db));
    while ($row = mysqli_fetch_assoc($result)) {
        foreach ($row as $key => $value) {
            $entry[$key] = $value;
        }
        $erg[] = $entry;
    }
    return $erg;
}

// Die Daten der nächsten $soviel Führungen ab dem Datum $ab in ein Array holen
// Parameter
//      $soviel -> so viele Einträge ab jetzt holen
//      $ab     -> Startdatum
// Retunrn:
//      Array mit allen Werte aus der Table
function getNextFuehrungen($soviel, $ab) {
    global $db, $table;
    $tab = $table;
    $erg = [];
    // $datum_heute = date("Ymd",strtotime("-1 days"));
    if ($table == 'anmeldungen') {
        $tab = 'fdatum1';
    } else if ($table == 'sonneanmeld') {
        $tab = 'sonnedatum';
    }
    $sql_sel = "SELECT *  FROM  $tab where datum >='$ab'  order by datum ASC LIMIT $soviel";
    $result = mysqli_query($db, $sql_sel) or die(mysqli_error($db));
    while ($row = mysqli_fetch_assoc($result)) {
        foreach ($row as $key => $value) {
            $entry[$key] = $value;
        }
        $erg[] = $entry;
    }
    return $erg;
}

// Das Datum der letzen Anmeldung suchen und übergeben
// Parameter
//      $date -> Startdatum
// Retunrn:
//      Datum der letzten Anmeldung
function getLastAnmeldung($date) {
    global $db, $table;
    $erg = array();
    // $datum_heute = date("Ymd",strtotime("-1 days"));
    $sql_sel = "SELECT MAX(fdatum) AS lastdate  FROM $table WHERE fdatum >= '$date' and anzahl != 0";
    $result = mysqli_query($db, $sql_sel) or die(mysqli_error($db));
    $row = mysqli_fetch_row($result);
    return $row[0];
}

// Bezeichnung der Gruppe für das übergeben Datum holen
// Parameter:
// $date -> Datum/Zeit (YYY-MM-DD HH:mm:ss), für das die Gruppe geholt werden soll
// Return: Bezeichnung der Gruppe
function getGroup($date) {
    global $db;
    global $db;
    $sql_stmt = "SELECT grp  FROM fdates WHERE dateTime = '$date'";
    $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db));
    $data = mysqli_fetch_assoc($result);
    return $data['grp'] ;
}

// Zählen, wieviele Personen zu einem Führungstermin angemeldet sind
// Parameter:
// $fid -> id des Führungsdatum
// Return: Anzahl der Personen
function getCountsPerDate($fdate) {
    global $db, $table;
    $sql_stmt = "SELECT SUM(anzahl) AS count FROM $table WHERE fdatum='$fdate'";
    $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db));
    $data = mysqli_fetch_assoc($result);
    return $data['count'] ;
}

function updateentries($nr,$val,$field)
{
    global $db, $table;
    $result = false;
    for ($i = 0; $i < count($nr); $i++) {
        $sql_stmt = "UPDATE $table SET $field=$val[0] where id=$nr[$i]";
        $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db));
    }
    return $result;
}

function updateCount($date, $anzahl) {
    global $db;
    $sql_stmt = "UPDATE fdatum1 SET count=count-$anzahl WHERE datum=$date AND count >0";
    $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db));
    return $result;
}

function deleteOne($id) {
    global $db, $table;
    $sql_stmt = "DELETE FROM $table WHERE id=$id";
    $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db));
    return $result;
}


$_POST = json_decode(file_get_contents('php://input'), true);

$erg = "";
$cmd = $_POST["cmd"];
$typ = $_POST["typ"];
$table = 'anmeldungen';
if ($typ == 'sonnen') {
    $table = 'sonneanmeld';
}   

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

switch ($cmd) {
    case 'GET_ANMELD':
        $erg = getAnmeldungen($_POST['id']);
        break;

    case 'GET_ANMELDNEW':
        $erg = getAnmeldungenNew($_POST['special'], $_POST['date']);
        break;

    case 'GET_SONDERNEW':
        $erg = getSonderNew($_POST['special'], $_POST['date']);
        break;

    case 'GET_TEILN_ID':
        $erg = getTeilnehmer($_POST['id']);
        break;

    case 'GET_TEILN_NAME':
        $erg = getTeilnehmerByName($_POST['name']);
        break;

    case 'GET_GROUP':
        $erg = getGroup($_POST['date']);
        break;

    case 'GET_DATES':
        $erg = getNextFuehrungen($_POST['anzahl'], $_POST['date']);
        break;

    case 'GET_COUNTS':
        $erg = getCountsPerDate($_POST['fdate']);
        break;

    case 'GET_LASTANMELDUNG':
        $erg = getLastAnmeldung($_POST['date']);
        break;

    case 'UPDATE':
        $erg = "Nix gut";
        if ((count($_POST['ids']) != 0) and (count($_POST['values']) != 0)) {
            $rows = $_POST['ids'];
            $values = $_POST['values'];
            $erg = updateEntries($rows, $values, $_POST['field']);
        }
        break;
    case 'UPDATECOUNT':
        $erg = updateCount($_POST['date'], $_POST['anzahl']);
        break;

    case 'DELETEONE':
        $erg = deleteOne($_POST['id']);
        break;

        case 'SENDMYMAIL':
        $erg = sendmail($_POST['betreff'], $defaultabsender, $_POST['body'], [], $_POST['bcc'], $_POST['to']);
        break;
}


header("Content-type: text/json;charset=utf-8");

echo json_encode($erg);



