diff --git a/mailpoet/lib/Automation/Integrations/MailPoet/Analytics/Controller/StepStatisticController.php b/mailpoet/lib/Automation/Integrations/MailPoet/Analytics/Controller/StepStatisticController.php new file mode 100644 index 0000000000..7b1164b663 --- /dev/null +++ b/mailpoet/lib/Automation/Integrations/MailPoet/Analytics/Controller/StepStatisticController.php @@ -0,0 +1,50 @@ +automationRunStorage = $automationRunStorage; + } + + public function getWaitingStatistics(Automation $automation, Query $query): array { + $rawData = $this->automationRunStorage->getAutomationStepStatisticForTimeFrame( + $automation->getId(), + AutomationRun::STATUS_RUNNING, + $query->getAfter(), + $query->getBefore() + ); + $stepData = []; + foreach ($rawData as $rawDatum) { + $stepData[$rawDatum['next_step_id']] = (int)$rawDatum['count']; + } + $stepsWithValues = array_keys($stepData); + + $data = []; + foreach ($automation->getSteps() as $step) { + $nextStepIds = array_map(function(NextStep $step) { return $step->getId(); + + }, $step->getNextSteps()); + $matchedSteps = array_intersect($nextStepIds, $stepsWithValues); + foreach ($matchedSteps as $matchedStep) { + if (!isset($data[$step->getId()])) { + $data[$step->getId()] = 0; + } + $data[$step->getId()] += $stepData[$matchedStep]; + } + } + return $data; + } +} diff --git a/mailpoet/lib/DI/ContainerConfigurator.php b/mailpoet/lib/DI/ContainerConfigurator.php index 8876826e4c..41c466844e 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\Endpoints\AutomationFlowEndpoint::class)->setPublic(true); $container->autowire(\MailPoet\Automation\Integrations\MailPoet\Analytics\Endpoints\OverviewEndpoint::class)->setPublic(true); $container->autowire(\MailPoet\Automation\Integrations\MailPoet\Analytics\Controller\AutomationTimeSpanController::class)->setPublic(true); + $container->autowire(\MailPoet\Automation\Integrations\MailPoet\Analytics\Controller\StepStatisticController::class)->setPublic(true); $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);