<?php
include_once "db.class.php";

$db = new db();

// echo '';
if (isset($_GET['authorisation'])) {
    // DATE NOW TO OPEN TRANSACTION
    $date = date('Y-m-d H:i', strtotime("+ 2 hours"));
    // INSERT INTO DEVICE LOG
    // $db->insert("INSERT INTO device_log (`device_id`,`text`,`date_time`) VALUES ('{$_GET['authorisation']}','AUTH CHECK','$date')");
    // TAKE ARDUINO ID SUPPLIED FROM THE ARDUINO AND FIND ITS TANK ID
    $tank_res = $db->exec_query("tanks", ['*'], '', '', '', '', "arduino_serial = '{$_GET['authorisation']}'", " ORDER BY record_id ASC LIMIT 1",false);
    $tank_info = $tank_res->fetch_assoc();

    // CHECK IF THERE IS A OPEN TRANSACITON WITH THAT TANK ID
    $check_for_authorisation = $db->exec_query("fuel_movement", ['*'], '', '', '', '', "tank_id = {$tank_info['record_id']} AND `status` = 'AUTHORISED'", " ORDER BY record_id ASC LIMIT 1",false);
    if ($check_for_authorisation->num_rows > 0) {
        $transaction = $check_for_authorisation->fetch_assoc();
        // SEND TRAN ID AND AUTHORISED TO ARDUINO
        echo "AUTHORISED T:{$transaction['record_id']}:T";
        // UPDATE TRANSACTION STATUS TO INITIALISED
        $res = $db->Update('fuel_movement', ['status', 'date_time_opened'], ['INI', "$date"], "record_id = {$transaction['record_id']}");
    }
}

// CHECK DONE REQUEST FROM ARDUINO
if (isset($_GET['done'])) {

    // DATE NOW TO OPEN TRANSACTION
    $date = date('Y-m-d H:i', strtotime("+ 2 hours"));
    // INSERT INTO DEVICE LOG
    // $db->insert("INSERT INTO device_log (`device_id`,`text`,`date_time`) VALUES ('{$_GET['done']}','COMPLETED TRANSACTION {$_GET['tran_id']}','$date')");
    // TAKE ARDUINO ID SUPPLIED FROM THE ARDUINO AND FIND ITS TANK ID
    $tank_res = $db->exec_query("tanks", ['*'], '', '', '', '', "arduino_serial = '{$_GET['done']}'");
    $tank_info = $tank_res->fetch_assoc();
    $get_tran_id_res = $db->exec_query("fuel_movement", ['*'], '', '', '', '', "tank_id = {$tank_info['record_id']} AND `status` = 'INI'", " ORDER BY record_id DESC LIMIT 1");
    $tran_id = $get_tran_id_res->fetch_assoc();
    $db->Update('fuel_movement', ['status', 'amount', 'flow_rate', 'pulses', 'date_time_closed'], ['DONE', "{$_GET['amount']}", "{$_GET['flow']}", "{$_GET['pulse']}", $date], "record_id = {$tran_id['record_id']}");

    echo "ACCEPTED";
}

if (isset($_GET['manual_override'])) {
    // DATE NOW TO OPEN TRANSACTION
    $date = date('Y-m-d H:i', strtotime("+ 2 hours"));
    // INSERT INTO DEVICE LOG
    // $db->insert("INSERT INTO device_log (`device_id`,`text`,`date_time`) VALUES ('{$_GET['manual_override']}','MANUAL OVERRIDE','$date')");
    // TAKE ARDUINO ID SUPPLIED FROM THE ARDUINO AND FIND ITS TANK ID
    $tank_res = $db->exec_query("tanks", ['*'], '', '', '', '', "arduino_serial = '{$_GET['manual_override']}'");
    $tank_info = $tank_res->fetch_assoc();
    $res = $db->insert("INSERT INTO fuel_movement (`status`,`date_time_opened`,`date_time_closed`,`flow_rate`,`pulses`,`amount`,`tank_id`) VALUES ('MANUAL OVERRIDE','$date','$date','{$_GET['flow']}','{$_GET['pulse']}','{$_GET['amount']}','{$tank_info['record_id']}')");
    echo "ACCEPTED";

}

// GET INFO FROM ARDUINO ABOUT TANK CURRENT MEASUREMNT
if (isset($_GET['tank_level'])) {
    // DATE NOW TO OPEN TRANSACTION
    $date = date('Y-m-d H:i', strtotime("+ 2 hours"));
    // INSERT INTO DEVICE LOG
    // $db->insert("INSERT INTO device_log (`device_id`,`text`,`date_time`) VALUES ('{$_GET['tank_level']}','TANK LEVEL UPDATE','$date')");
    // TAKE ARDUINO ID SUPPLIED FROM THE ARDUINO AND FIND ITS TANK ID
    $tank_res = $db->exec_query("tanks", ['*'], '', '', '', '', "arduino_serial = '{$_GET['tank_level']}'");
    $tank_info = $tank_res->fetch_assoc();

    // INSERT MEASUREMENT INTO TANK
    $db->insert("INSERT INTO tank_level_log (`tank_id`,`distance`,`date_time_measured`) VALUES ({$tank_info['record_id']},'{$_GET['distance']}','$date')");
    // echo "INSERT INTO tank_level_log (`tank_id`,`distance`,`date_time_measured`) VALUES ({$tank_info['record_id']},'{$_GET['distance']}','$date')";
    echo "ACCEPTED";

}

// GET INFO FROM ARDUINO ABOUT TANK CURRENT MEASUREMNT
if (isset($_GET['settings'])) {
    // DATE NOW TO OPEN TRANSACTION
    $date = date('Y-m-d H:i', strtotime("+ 2 hours"));
    // INSERT INTO DEVICE LOG
    // $db->insert("INSERT INTO device_log (`device_id`,`text`,`date_time`) VALUES ('{$_GET['settings']}','REQUEST SETTINGS','$date')");
    // TAKE ARDUINO ID SUPPLIED FROM THE ARDUINO AND FIND ITS TANK ID
    $tank_res = $db->exec_query("tanks", ['*'], '', '', '', '', "arduino_serial = '{$_GET['settings']}'");
    $tank_info = $tank_res->fetch_assoc();

    echo "t:" . $tank_info['pump_cutoff_time'] . ":t o:" . $tank_info['fine_tune_calibration'] . ":o c:" . $tank_info['flow_meter_calibration'] . ":c  AUTHORISED";
}
