<?php declare(strict_types = 1);
namespace MailPoet\EmailEditor\Integrations\MailPoet;
if (!defined('ABSPATH')) exit;
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
class AutomationEmailPreviewOrderProvider {
private WooCommerceHelper $wooCommerceHelper;
public function __construct(
WooCommerceHelper $wooCommerceHelper
) {
$this->wooCommerceHelper = $wooCommerceHelper;
}
public function getOrder(): ?\WC_Order {
if (!class_exists(\WC_Order::class)) {
return null;
}
try {
$order = $this->getExistingReviewableOrder();
if ($order instanceof \WC_Order) {
return $order;
}
} catch (\Throwable $e) {
return null;
}
return null;
}
private function getExistingReviewableOrder(): ?\WC_Order {
$orders = $this->wooCommerceHelper->wcGetOrders([
'type' => 'shop_order',
'status' => 'completed',
'limit' => 10,
'orderby' => 'date',
'order' => 'DESC',
]);
if (!is_array($orders)) {
return null;
}
foreach ($orders as $order) {
if (!$order instanceof \WC_Order) {
continue;
}
if ($order->get_order_key() === '' || count($order->get_items()) === 0) {
continue;
}
if ($this->wooCommerceHelper->wcOrderHasActionableReviewItems($order)) {
return $order;
}
}
return null;
}
}