From 8ce6b3d0fd9b4bed24db44f31db1dc04913f5b91 Mon Sep 17 00:00:00 2001 From: James Pattinson Date: Tue, 11 Mar 2025 18:19:51 +0000 Subject: [PATCH] WIP booking out --- action.php | 43 ++++++++++- arrive.png | Bin 0 -> 2648 bytes depart.png | Bin 0 -> 2795 bytes functions.php | 6 +- newppr.php | 2 +- tower.php | 210 +++++++++++++++++++++++++++++++++++++++++++------- 6 files changed, 226 insertions(+), 35 deletions(-) create mode 100644 arrive.png create mode 100644 depart.png diff --git a/action.php b/action.php index b333503..9596856 100644 --- a/action.php +++ b/action.php @@ -88,11 +88,45 @@ function opCancel() { } function opLanded() { + + $date = date('Y-m-d'); + $time = urldecode($_GET['time']); + $landed_dt = $date . ' ' . $time; + $conn = connectDb(); - $sql = "UPDATE submitted SET status = 'LANDED', landed_dt = NOW() where id = " . $_GET['id']; - $result = $conn->query($sql); - logJournal($conn, $_GET['id'], "Marked Landed"); + $sql = "UPDATE submitted SET status = 'LANDED', landed_dt = ? WHERE id = ?"; + + $stmt = $conn->prepare($sql); + $stmt->bind_param("si", $landed_dt, $_GET['id']); + + $stmt->execute(); + $stmt->close(); + + logJournal($conn, $_GET['id'], "Marked Landed at time " . $time); + $conn->close(); + +} + +function opDeparted() { + + $date = date('Y-m-d'); + $time = urldecode($_GET['time']); + $departed_dt = $date . ' ' . $time; + + $conn = connectDb(); + $sql = "UPDATE submitted SET status = 'DEPARTED', departed_dt = ? WHERE id = ?"; + + $stmt = $conn->prepare($sql); + $stmt->bind_param("si", $departed_dt, $_GET['id']); + + $stmt->execute(); + $stmt->close(); + + logJournal($conn, $_GET['id'], "Marked Departed at time " . $time); + + $conn->close(); + } function opDelete() { @@ -148,6 +182,9 @@ switch($_GET['op']) { case "landed": opLanded(); break; + case "departed": + opDeparted(); + break; case "delete": opDelete(); break; diff --git a/arrive.png b/arrive.png new file mode 100644 index 0000000000000000000000000000000000000000..5848b541bbba89db9a63fd935c3224466663e6dd GIT binary patch literal 2648 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 literal 0 HcmV?d00001 diff --git a/functions.php b/functions.php index 295757e..788155e 100644 --- a/functions.php +++ b/functions.php @@ -128,9 +128,9 @@ function validateSecureToken($token) { list($email, $entryId, $timestamp, $hash) = explode('|', $decoded); // Check expiration (e.g., valid for 1 hour) - if (time() - $timestamp > 3600) { - return false; - } + //if (time() - $timestamp > 3600) { + // return false; + //} // Verify hash $data = "$email|$entryId|$timestamp"; diff --git a/newppr.php b/newppr.php index 88fc058..4212e18 100644 --- a/newppr.php +++ b/newppr.php @@ -36,7 +36,7 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") { echo "Username is not set."; } - //echo ''; + echo ''; } else { echo "

Error inserting data: " . $conn->error . "

"; } diff --git a/tower.php b/tower.php index 1950a8d..765cf0f 100644 --- a/tower.php +++ b/tower.php @@ -7,6 +7,8 @@ require_db_auth(); + + -

Swansea Inbound PPR

+

Tower Ops

-
+
Inbound PPR
+ connect_error) { die("Connection failed: " . $conn->connect_error); } -$custom_headings = [ - 'column1' => 'Custom Heading 1', - 'column2' => 'Custom Heading 2', - 'column3' => 'Custom Heading 3' - // Add more custom headings as needed -]; - // Define your SQL query -$sql = "SELECT id, status, ac_reg, ac_type, ac_call, TIME_FORMAT(eta,'%H:%i') AS ETA, fuel, in_from, pob_in FROM submitted WHERE DATE(eta) = CURDATE() AND status != 'DELETED' ORDER BY eta ASC;"; // Replace with your table name +$sql = "SELECT id, status, ac_reg, ac_type, ac_call, TIME_FORMAT(eta,'%H:%i') AS ETA, fuel, in_from, pob_in FROM submitted WHERE DATE(eta) = CURDATE() AND (status = 'NEW' OR status = 'CANCELED') ORDER BY eta ASC;"; // Replace with your table name // Execute the query $result = $conn->query($sql); @@ -197,7 +287,7 @@ $result = $conn->query($sql); // Check if there are results if ($result->num_rows > 0) { // Start HTML table - echo ' + echo '
'; @@ -227,7 +317,63 @@ if ($result->num_rows > 0) { } } } - echo ''; + echo ''; + echo ''; + } + + echo '
' . $row['status'] .'
'; +} else { + echo "No results found."; +} + +?> + +
Booking Out
+ +
+ +query($sql); + +// Check if there are results +if ($result->num_rows > 0) { + // Start HTML table + echo ' + + '; + + // Output table headers (assuming column names are known) + $fields = $result->fetch_fields(); + foreach ($fields as $field) { + if ($field->name != 'status' && $field->name != 'id' && $field->name != 'ac_call') { + echo ''; + } + + } + echo ''; + + echo ' + + '; + + // Output table rows + while ($row = $result->fetch_assoc()) { + echo ''; + foreach ($row as $key => $value) { + if ($key != 'status' && $key != 'id' && $key != 'ac_call') { + if ($key == 'ac_reg' && $row['ac_call'] != NULL) { + echo ''; + } else { + echo ''; + } + } + } + echo ''; echo ''; } @@ -241,6 +387,8 @@ $conn->close(); ?> + +
\ No newline at end of file + if (td !== tr.lastElementChild) { + let rowId = tr.dataset.id; // Get the unique row ID + openDetail(rowId); + } + } + + + + +
' . htmlspecialchars($field->name ?? '') . 'actions
' . htmlspecialchars($row['ac_call'] ?? '') . "
" . $value . '
' . htmlspecialchars($value ?? '') . '