/** * Get facts data per dimension. * * @param Location $location * @param bool $percent * @return array */ public function getFacts(Location $location, $percent = false) { $qb = $this->em->createQueryBuilder(); $qb->select('r.time, r.value, IDENTITY(r.metric) as metric')->from('CampaignChain\\CoreBundle\\Entity\\ReportAnalyticsLocationFact', 'r')->where('r.location = :locationId')->orderBy('r.time', 'ASC')->setParameter('locationId', $location->getId()); $query = $qb->getQuery(); $facts = $query->getArrayResult(); $factsData = []; $tmp = []; foreach ($facts as $fact) { $tmp[$fact['metric']][] = [$fact['time']->getTimestamp() * 1000, $fact['value']]; } foreach (array_keys($tmp) as $k) { $factsData[$k]['data'] = $this->serializer->serialize($tmp[$k], 'json'); $factsData[$k]['id'] = $k; // if ($percent) { // $factsData[$k]['percent'] = $this->getDimensionPercent($campaign, $activity, $k); // } } return $factsData; }