guard( 'manage_woocommerce', 'manage_options' ); if ( $check ) { return $check; } $valid_periods = [ 'week', 'month', 'year' ]; if ( ! empty( $period ) && ! in_array( $period, $valid_periods, true ) ) { return [ 'error' => "Invalid period '{$period}'. Accepted values: week, month, year." ]; } try { $params = [ 'per_page' => min( 25, max( 1, (int) ( $per_page ?? 10 ) ) ), 'period' => $period ?? 'month', ]; if ( ! empty( $branch ) ) { $params['branch'] = sanitize_text_field( $branch ); } $request = new \WP_REST_Request( 'GET', '/wpcafe/v2/dashboard/top-sales' ); $request->set_query_params( $params ); $controller = new \WpCafe\Dashboard\Controllers\Dashboard_Controller(); $data = $this->extract_response( $controller->get_top_sales( $request ), 'Failed to retrieve top sales data.' ); if ( isset( $data['error'] ) ) { return $data; } return $data; } catch ( \Throwable $e ) { Log::error( 'Wpcafe_Get_Top_Sales_Tool error', [ 'error' => $e->getMessage() ] ); return [ 'error' => 'Failed to retrieve top sales: ' . $e->getMessage() ]; } } }