From 1d03ee25ef9489b5663661c4f397ca585aaf030f Mon Sep 17 00:00:00 2001 From: Jepp9350 <2jepp9350@gmail.com> Date: Tue, 7 Jan 2025 11:48:27 +0100 Subject: [PATCH] Add vehicle plate order history route and data retrieval Introduced a new route to fetch the last five orders for a vehicle using its plate. Implemented a corresponding method in the `orders_o` class to query order history based on vehicle plates, supporting dynamic entry limits. This enhances functionality for tracking vehicle-associated orders. --- objects/orders_o.php | 13 ++++++++ routes/vehiclePlateLastOrdersRoute.php | 42 ++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 routes/vehiclePlateLastOrdersRoute.php diff --git a/objects/orders_o.php b/objects/orders_o.php index 8b70ad75..c01df3ed 100644 --- a/objects/orders_o.php +++ b/objects/orders_o.php @@ -217,4 +217,17 @@ class orders_o extends db } return false; } + + /** + * @param string $plate The vehicle plate + * @param int $entries The number of last entries to return (default 10) + * @return array The orders for the vehicle plate + */ + public function getOrderHistoryByVehiclePlate(string $plate, int $entries = 10): array + { + global $db; + $sql = "SELECT * FROM $this->table WHERE reg_1 = '$plate' OR reg_2 = '$plate' OR reg_3 = '$plate' ORDER BY id DESC LIMIT $entries"; + $result = $db->query($sql); + return $db->fetch_all($result); + } } \ No newline at end of file diff --git a/routes/vehiclePlateLastOrdersRoute.php b/routes/vehiclePlateLastOrdersRoute.php new file mode 100644 index 00000000..16260d6b --- /dev/null +++ b/routes/vehiclePlateLastOrdersRoute.php @@ -0,0 +1,42 @@ +get('/department/vehicle/order/history', function () { + // Require the user to be logged in + global $response; + $this->requirePermission('department_vehicle_order_last_five'); + // Get the user object + $user = (new authentication())->get_user(); + // Check if the request was successful + if ($user) { + // Make sure the vehicle plate is set + if (!(string)$this->fromRequest('plate')) { + $response->error('Plate parameter is required', 400); + } + // Log the incident + (new logs_o())->add('orders', 'global', 1, $user->id, 'FETCH_VEHICLE_ORDER_HISTORY', 'Successfully fetched vehicle order history'); + // Return the list of departments + $response->success( + (new orders_o())->getOrderHistoryByVehiclePlate($this->fromRequest('plate'), 5) + ); + } else { + // Log the incident + (new logs_o())->add('orders', 'global', 1, 0, 'FETCH_VEHICLE_ORDER_HISTORY', 'No user found, or invalid session'); + // Return an error + $response->error('Invalid session', 400); + } + }); + } +} \ No newline at end of file