Files
roi-theme/wp-content/plugins/wp-marketing-automations/includes/api/dashboard/class-bwfcrm-api-get-recent-recovered.php
root a22573bf0b Commit inicial - WordPress Análisis de Precios Unitarios
- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 21:04:30 -06:00

104 lines
3.1 KiB
PHP
Executable File

<?php
class BWFAN_API_Get_Recent_Recovered extends BWFAN_API_Base {
public static $ins;
public static function get_instance() {
if ( null === self::$ins ) {
self::$ins = new self();
}
return self::$ins;
}
public $contact;
public $total_count;
public function __construct() {
parent::__construct();
$this->method = WP_REST_Server::READABLE;
$this->route = '/dashboard/recent-recovered';
$this->pagination->limit = 5;
$this->pagination->offset = 0;
}
public function default_args_values() {
}
public function process_api_call() {
$offset = ! empty( $this->get_sanitized_arg( 'offset', 'text_field' ) ) ? $this->get_sanitized_arg( 'offset', 'text_field' ) : 0;
$limit = ! empty( $this->get_sanitized_arg( 'limit', 'text_field' ) ) ? $this->get_sanitized_arg( 'limit', 'text_field' ) : 5;
$recovered_carts = BWFAN_Automations::get_recovered_carts( $offset, $limit );
if ( empty( $recovered_carts ) ) {
$this->response_code = 200;
$this->total_count = 0;
return $this->success_response( [], __( 'Recovered carts found', 'wp-marketing-automations' ) );
}
$result = [];
foreach ( $recovered_carts['items'] as $item ) {
if ( ! $item instanceof WC_Order ) {
continue;
}
$order_date = $item->get_date_created();
$result[] = [
'order_id' => $item->get_id(),
'billing_full_name' => $this->get_full_name( $item ),
'email' => $item->get_billing_email(),
'phone' => $item->get_billing_phone(),
'date_created' => ( $order_date instanceof WC_DateTime ) ? ( $order_date->date( 'Y-m-d H:i:s' ) ) : '',
'items' => $this->get_items( $item ),
'total' => $item->get_total(),
'actions' => ''
];
}
$this->response_code = 200;
$this->total_count = $recovered_carts['total_record'];
return $this->success_response( $result, __( 'Recovered carts found', 'wp-marketing-automations' ) );
}
public function get_full_name( $item ) {
$buyer = '';
if ( ! $item instanceof WC_Order ) {
return '';
}
if ( $item->get_billing_first_name() || $item->get_billing_last_name() ) {
/* translators: 1: first name 2: last name */
$buyer = trim( sprintf( _x( '%1$s %2$s', 'full name', 'woocommerce' ), $item->get_billing_first_name(), $item->get_billing_last_name() ) ); // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
} elseif ( $item->get_billing_company() ) {
$buyer = trim( $item->get_billing_company() );
} elseif ( $item->get_customer_id() ) {
$user = get_user_by( 'id', $item->get_customer_id() );
$buyer = ucwords( $user->display_name );
}
return apply_filters( 'woocommerce_admin_order_buyer_name', $buyer, $item );
}
public function get_email( $item ) {
return $item->get_billing_email();
}
public function get_items( $item ) {
$names = [];
foreach ( $item->get_items() as $value ) {
$names[] = $value->get_name();
}
return $names;
}
public function get_result_total_count() {
return $this->total_count;
}
}
BWFAN_API_Loader::register( 'BWFAN_API_Get_Recent_Recovered' );