get('/user/orders', function () { // Require the user to be logged in global $response; $this->requirePermission('list_own_orders'); // Get the user object $user = (new authentication())->get_user(); // Check if the request was successful if ($user) { // Log the incident (new logs_o())->add('orders', 'global', 1, $user->id, 'LIST_OWN_ORDERS', 'Successfully listed own orders'); // Return the list of the user's orders $response->success( (new orders_o())->getCustomerOrdersPaginated( $user->customer_number->value(), ($this->fromRequest('page') ?? 1), ($this->fromRequest('limit') ?? 10), ['id' => 'DESC'], $this->fromRequest('search') === null ? '' : $this->fromRequest('search'), $this->fromRequest('filters') === null ? [] : $response->parseFilters($this->fromRequest('filters')) ?? [] ) ); } else { // Log the incident (new logs_o())->add('orders', 'global', 1, 0, 'LIST_OWN_ORDERS', 'No user found, or invalid session'); // Return an error $response->error('Invalid session', 400); } }, [ 'list_own_orders' => 'List own orders' ] ); $this->get('/user/order', function () { // Require the user to be logged in global $response; $this->requirePermission('fetch_own_order'); // Get the user object $user = (new authentication())->get_user(); // Check if the request was successful if ($user) { // Check if the required fields are set $data = $_GET; if (!isset($data['id'])) { $response->error('id parameter is required', 400); } // Make sure the user exists if (!$user->exists()) { $response->error('User not found', 400); } // Make sure the user is allowed to fetch the order if (!$user->hasAccessToOrder($data['id'])) { $response->error('You are not allowed to fetch this order', 400); } // Log the incident (new logs_o())->add('orders', 'global', 1, $user->id, 'FETCH_OWN_ORDER', 'Successfully fetched own order'); // Return the list of the user's orders $response->success( (new orders_o())->getOrderById($data['id'])->includeIncludes()->asArray() ); } else { // Log the incident (new logs_o())->add('orders', 'global', 1, 0, 'FETCH_OWN_ORDER', 'No user found, or invalid session'); // Return an error $response->error('Invalid session', 400); } }, [ 'fetch_own_order' => 'Fetch own order' ] ); } }