<?php

// admin :: Calendar controller
header('Content-Type: application/json');
session_start();
require __DIR__ . "/../../vendor/autoload.php";
$EXP = new Expenses\Expenses();
if (!$EXP->user_id()) {
    exit(json_encode(['error' => 'please login']));
}
//exit(json_encode($_GET));// test
switch ($_GET['do']) {
    case 'list':
        // list all user sessions
        //$user_id=$_POST['user_id'];
        //$sessions=$edxApp->sessions([$user_id])[$user_id];
        $from = date("Y-m-d", $_GET['start']);
        $to = date("Y-m-d", $_GET['end']);
        $sql = "SELECT ed_id, ed_name as title, ed_date as start FROM expenses_data WHERE ed_date>='{$from}' AND ed_date<='{$to}';";
        $q = $EXP->db()->query($sql) or die("Error:sql");
        $dat = [];
        while ($r = $q->fetch(PDO::FETCH_ASSOC)) {
            $dat[] = $r;
        }
        //exit(json_encode($_GET));// test
        exit(json_encode($dat));
        //print_r($sessions);
        break;
    default:
        //die("Error : unknow action ".$_POST['do']);
        exit(json_encode($_GET));
<?php

//Download expense data as CSV
session_start();
require __DIR__ . "/../../vendor/autoload.php";
$EXP = new Expenses\Expenses();
if (!$EXP->user_id()) {
    header("location:../login/logout.php");
    die("Error:!user_id");
}
$sql = "SELECT ed_name, ed_value, ed_currency, ed_date FROM expenses_data ";
$sql .= "WHERE ed_uid=" . $EXP->user_id() . " ORDER BY ed_date;";
$q = $EXP->db()->query($sql) or die("Error {$sql}");
$dat = [];
while ($r = $q->fetch(PDO::FETCH_ASSOC)) {
    $dat[] = $r;
}
/*
function maybeEncodeCSVField($string) {
    if(strpos($string, ',') !== false || strpos($string, '"') !== false || strpos($string, "\n") !== false) {
        $string = '"' . str_replace('"', '""', $string) . '"';
    }
    return $string;
}
*/
//echo "<pre>";
//print_r($dat);
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=expenses.csv");
header("Pragma: no-cache");
header("Expires: 0");
<?php

// Expenses visualisation //
header('Content-Type: application/json');
session_start();
require __DIR__ . "/../../vendor/autoload.php";
$EXP = new Expenses\Expenses();
if (!$EXP->user_id()) {
    exit(json_encode(['error' => 'please log in']));
}
switch ($_POST['do']) {
    case 'search':
        $WHERE = [];
        $WHERE[] = "ed_uid=" . $EXP->user_id();
        if ($_POST['str']) {
            $WHERE[] = "ed_name LIKE " . $EXP->db()->quote('%' . $_POST['str'] . '%');
        }
        if ($_POST['minmax']) {
            $min = $max = 0;
            if (preg_match("/<=?([0-9]+)/", $_POST['minmax'], $o)) {
                $max = $o[1] * 1;
            }
            if (preg_match("/>=?([0-9]+)/", $_POST['minmax'], $o)) {
                $min = $o[1] * 1;
            }
            if ($min > 0) {
                $WHERE[] = "ed_value >= " . $min;
            }
            if ($max > 0) {
                $WHERE[] = "ed_value <= " . $max;
            }
<?php

// Expenses visualisation //
header('Content-Type: application/json');
session_start();
require __DIR__ . "/../../vendor/autoload.php";
$EXP = new Expenses\Expenses();
if (!$EXP->user_id()) {
    exit(json_encode(['error' => 'please log in']));
}
switch ($_POST['do']) {
    case 'today':
        $today = date("Y-m-d");
        $sql = "SELECT * FROM expenses_data WHERE ed_uid=" . $EXP->user_id() . " AND ed_date LIKE '{$today}%' ORDER BY ed_date;";
        $q = $EXP->db()->query($sql) or die;
        //echo $sql;exit;
        $dat = [];
        while ($r = $q->fetch(PDO::FETCH_ASSOC)) {
            $r['date'] = explode(" ", $r['ed_date'])[0];
            $r['time'] = explode(" ", $r['ed_date'])[1];
            $r['time'] = substr($r['time'], 0, 5);
            $dat[] = $r;
        }
        exit(json_encode($dat));
    case 'savenew':
        //print_r($_POST);exit;
        $dat = [];
        if ($id = $EXP->parseInsert($_POST['str'])) {
            $dat['inserted'] = $id;
        }
        exit(json_encode($dat));