<?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", ['*'], '', '', '', '', "unit_code = '{$_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']}");
    }else{
        echo "NOTHING";
    }
}

// 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", ['*'], '', '', '', '', "unit_code = '{$_GET['done']}'");
    $tank_info = $tank_res->fetch_assoc();
    // get company_id
    $site_res = $db->exec_query("sites", ['*'], '', '', '', '', "record_id = '{$tank_info['site_id']}'");
    $site_info = $site_res->fetch_assoc();
    // get latest order_id
    $order_res = $db->exec_query("fuel_movement", ['*'], '', '', '', '', "company_id = {$site_info['company_id']}", "ORDER BY record_id DESC LIMIT 1");
    $order_id = $order_res->fetch_assoc()['order_id'] + 1;
    $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();

    $amount = $tank_info['flow_meter_calibration'] * $_GET['pulse'];

    $db->Update('fuel_movement', ['status', 'amount', 'flow_rate', 'pulses', 'date_time_closed','order_id'], ['DONE', "$amount", "0", "{$_GET['pulse']}", $date, $order_id], "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", ['*'], '', '', '', '', "unit_code = '{$_GET['manual_override']}'");
    $tank_info = $tank_res->fetch_assoc();
    // get company_id
    $site_res = $db->exec_query("sites", ['*'], '', '', '', '', "record_id = '{$tank_info['site_id']}'");
    $site_info = $site_res->fetch_assoc();
    // get latest order_id
    $order_res = $db->exec_query("fuel_movement", ['*'], '', '', '', '', "company_id = {$site_info['company_id']}", "ORDER BY record_id DESC LIMIT 1");
    $order_id = $order_res->fetch_assoc()['order_id'] + 1;
    // get company details
    $company_res = $db->exec_query('companies', ['*'], '', '', '', '', "record_id = {$site_info['company_id']}");
    $company_info = $company_res->fetch_assoc();


    $amount = $tank_info['flow_meter_calibration'] * $_GET['pulse'];
    // INSERT INTO FUEL MOVEMENT
    $res = $db->insert("INSERT INTO fuel_movement (`status`,`date_time_opened`,`date_time_closed`,`flow_rate`,`pulses`,`amount`,`tank_id`,`company_id`,`order_id`,`user_id`,`fuel_price`) VALUES ('MANUAL OVERRIDE','$date','$date','0','{$_GET['pulse']}','$amount','{$tank_info['record_id']}',{$site_info['company_id']},{$order_id},0,{$company_info['fuel_price']})");
    if ($res) {
        echo "ACCEPTED";
    } else {
        echo "ERROR";
    }

}

// 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", ['*'], '', '', '', '', "unit_code = '{$_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", ['*'], '', '', '', '', "unit_code = '{$_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";
}
