get( '/department/license-plate/lookup', function () { // Require the user to be logged in global $response; $this->requirePermission('department_license_plate_lookup'); // 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); } // Return the vehicle order history $response->success( (new orders_o())->get_vehicle_order_history($this->fromRequest('plate')) ); } 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); } }, [ 'department_license_plate_lookup' => 'Departmental access to lookup a license plate and view the order history' ] ); $this->get('/department/license-plate/customer-lookup', function () { // Require the user to be logged in global $response; self::requirePermission('department_license_plate_lookup'); // Get the user object $user = (new authentication())->get_user(); // Check if the request was successful if ($user) { // Make sure the vehicle plate is set self::requireParameters(['plate', 'customer_number', 'column']); self::requireType((string)self::getParameter('plate'), 'string'); self::requireType((int)self::getParameter('customer_number'), self::type_int()); self::requireType((string)self::getParameter('column'), 'string'); self::requireMinLength('customer_number', 1); self::requireMaxLength('customer_number', 10); self::requireMinLength('plate', 0); self::requireMaxLength('plate', 10); // Make sure the column is allowed $allowedColumns = ['reg_1', 'reg_2', 'reg_3']; if (!in_array((string)self::getParameter('column'), $allowedColumns)) { $response->error('Invalid column, allowed columns are: ' . implode(', ', $allowedColumns), 400); } // Return the vehicle order history $response->success( (new orders_o()) ->setSearchableFields(['customer_id', (string)self::getParameter('column'), 'created_at']) ->listObjectsWithPagination( 1, 10, (string)self::getParameter('plate'), ['customer_id' => self::getParameter('customer_number')], ['created_at' => 'DESC'], function ($order) { return [ 'registration_number' => $order[(string)self::getParameter('column')], // Get the registration number ]; } ) ); } 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); } }, [ 'department_license_plate_lookup' => 'List all the records for a specific customer number and registration number column in the orders table' ] ); } }