public function indexAction(Request $request) { $dateRange = new StatsDateRange(); $dateRange->setFromRequest($request); $repositoryBuilder = new VisitorSessionRanTreeVersionRepositoryBuilder(); $repositoryBuilder->setDateRange($dateRange); $doctrine = $this->getDoctrine()->getManager(); $treeRepo = $doctrine->getRepository('QuestionKeyBundle:VisitorSessionRanTreeVersion'); $sessions = $treeRepo->findByBuilder($repositoryBuilder); return $this->render('QuestionKeyBundle:AdminVisitorSessionRanTreeVersionList:index.html.twig', array('dateRange' => $dateRange, 'sessionRanTreeVersions' => $sessions)); }
public function build() { $data = array(); $currentFrom = clone $this->dateRange->getFrom(); $interval = new \DateInterval($this->interval); $interval1Sec = new \DateInterval("PT1S"); while ($currentFrom < $this->dateRange->getTo()) { $currentTo = clone $currentFrom; $currentTo->add($interval); $currentTo->sub($interval1Sec); $data[] = new StatsDateRange(clone $currentFrom, $currentTo); $currentFrom->add($interval); } return $data; }
public function statsSeriesAction($treeId, Request $request) { $doctrine = $this->getDoctrine()->getManager(); $tsrtvRepo = $doctrine->getRepository('QuestionKeyBundle:VisitorSessionRanTreeVersion'); // build $this->build($treeId); //data $statsDateRange = new StatsDateRange(); $statsDateRange->setFromRequest($request); $statsDateRangeListBuilder = new StatsDateRangeListBuilder($statsDateRange, $request->get('interval')); $statsDateRangeList = $statsDateRangeListBuilder->build(); $data = array(); foreach ($statsDateRangeList as $statsDateRangeSegment) { $data[] = array('range' => $statsDateRangeSegment, 'value' => $tsrtvRepo->getStatsCountTimesRanForTree($this->tree, $statsDateRangeSegment)); } return $this->render('QuestionKeyBundle:AdminTree:statsSeries.html.twig', array('tree' => $this->tree, 'dateRange' => $statsDateRange, 'data' => $data)); }
public function getStatsCountTimesRanIncludedNode(Node $node, StatsDateRange $statsDateRange) { $data = $this->getEntityManager()->createQuery('SELECT vsrtv.id AS x FROM QuestionKeyBundle:VisitorSessionRanTreeVersion vsrtv' . ' JOIN vsrtv.onNodes vson' . ' WHERE vson.node = :node AND vsrtv.createdAt > :from AND vsrtv.createdAt < :to ' . ' GROUP BY vsrtv.id ')->setParameter('node', $node)->setParameter('from', $statsDateRange->getFrom())->setParameter('to', $statsDateRange->getTo())->getResult(); return count($data); }
public function statsAction($treeId, $versionId, $nodeId, Request $request) { // build $return = $this->build($treeId, $versionId, $nodeId); //data $statsDateRange = new StatsDateRange(); $statsDateRange->setFromRequest($request); $doctrine = $this->getDoctrine()->getManager(); $tsrtvRepo = $doctrine->getRepository('QuestionKeyBundle:VisitorSessionRanTreeVersion'); //view return $this->render('QuestionKeyBundle:AdminTreeVersionNode:stats.html.twig', array('tree' => $this->tree, 'treeVersion' => $this->treeVersion, 'node' => $this->node, 'dateRange' => $statsDateRange, 'countTimesRanIncludedNode' => $tsrtvRepo->getStatsCountTimesRanIncludedNode($this->node, $statsDateRange), 'countTimesRanForTree' => $tsrtvRepo->getStatsCountTimesRanForTree($this->tree, $statsDateRange), 'countTimesRanForTreeVersion' => $tsrtvRepo->getStatsCountTimesRanForTreeVersion($this->treeVersion, $statsDateRange))); }