diff --git a/mailpoet/lib/Automation/Integrations/MailPoet/Analytics/Analytics.php b/mailpoet/lib/Automation/Integrations/MailPoet/Analytics/Analytics.php index 9fc12a6ae3..1de03344a0 100644 --- a/mailpoet/lib/Automation/Integrations/MailPoet/Analytics/Analytics.php +++ b/mailpoet/lib/Automation/Integrations/MailPoet/Analytics/Analytics.php @@ -5,6 +5,7 @@ namespace MailPoet\Automation\Integrations\MailPoet\Analytics; use MailPoet\API\REST\API; use MailPoet\Automation\Engine\Hooks; use MailPoet\Automation\Engine\WordPress; +use MailPoet\Automation\Integrations\MailPoet\Analytics\Endpoints\OrderEndpoint; use MailPoet\Automation\Integrations\MailPoet\Analytics\Endpoints\OverviewEndpoint; class Analytics { @@ -21,6 +22,7 @@ class Analytics { public function register(): void { $this->wordPress->addAction(Hooks::API_INITIALIZE, function (API $api) { $api->registerGetRoute('automation/analytics/overview', OverviewEndpoint::class); + $api->registerGetRoute('automation/analytics/orders', OrderEndpoint::class); }); } } diff --git a/mailpoet/lib/Automation/Integrations/MailPoet/Analytics/Endpoints/OrderEndpoint.php b/mailpoet/lib/Automation/Integrations/MailPoet/Analytics/Endpoints/OrderEndpoint.php new file mode 100644 index 0000000000..525b3ee05e --- /dev/null +++ b/mailpoet/lib/Automation/Integrations/MailPoet/Analytics/Endpoints/OrderEndpoint.php @@ -0,0 +1,48 @@ +automationStorage = $automationStorage; + $this->orderControllerFactory = $orderControllerFactory; + } + + public static function getRequestSchema(): array { + return [ + 'id' => Builder::integer()->required(), + 'query' => Query::getRequestSchema(), + ]; + } + + public function handle(Request $request): Response { + $automation = $this->automationStorage->getAutomation(absint($request->getParam('id'))); + if (!$automation) { + throw new NotFoundException(__('Automation not found', 'mailpoet')); + } + + $query = Query::fromRequest($request); + $controller = $this->orderControllerFactory->getOrderController(); + $result = $controller->getOrdersForAutomation($automation, $query); + return new Response($result); + } +} diff --git a/mailpoet/lib/DI/ContainerConfigurator.php b/mailpoet/lib/DI/ContainerConfigurator.php index 8805ca3d8c..e13ca3ceb7 100644 --- a/mailpoet/lib/DI/ContainerConfigurator.php +++ b/mailpoet/lib/DI/ContainerConfigurator.php @@ -200,6 +200,7 @@ class ContainerConfigurator implements IContainerConfigurator { $container->autowire(\MailPoet\Automation\Integrations\MailPoet\Analytics\Controller\OverviewStatisticsController::class)->setPublic(true); $container->autowire(\MailPoet\Automation\Integrations\MailPoet\Analytics\Controller\FreeOrderController::class)->setPublic(true); $container->autowire(\MailPoet\Automation\Integrations\MailPoet\Analytics\Factories\OrderControllerFactory::class)->setPublic(true); + $container->autowire(\MailPoet\Automation\Integrations\MailPoet\Analytics\Endpoints\OrderEndpoint::class)->setPublic(true); // Config $container->autowire(\MailPoet\Config\AccessControl::class)->setPublic(true); $container->autowire(\MailPoet\Config\Activator::class)->setPublic(true);