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; } }