/**
  * @param Campaign $campaign
  * @return array
  */
 public function getSummarizedStatistic(Campaign $campaign)
 {
     $today = new \DateTime('now', new \DateTimeZone('UTC'));
     $qb = $this->_em->createQueryBuilder()->from('OroTrackingBundle:TrackingEvent', 'trackingEvent')->select(['trackingEvent.name', 'IDENTITY(trackingEvent.website) as websiteId', 'COUNT(trackingEvent.id) as visitCount', 'DATE(trackingEvent.loggedAt) as loggedAtDate'])->andWhere('trackingEvent.code = :trackingEventCode')->andWhere('DATE(trackingEvent.loggedAt) < DATE(:today)')->setParameter('trackingEventCode', $campaign->getCode())->setParameter('today', $today)->groupBy('trackingEvent.name, trackingEvent.website, loggedAtDate');
     if ($campaign->getReportRefreshDate()) {
         $qb->andWhere('DATE(trackingEvent.loggedAt) > DATE(:since)')->setParameter('since', $campaign->getReportRefreshDate());
     }
     return $qb->getQuery()->getArrayResult();
 }
Ejemplo n.º 2
0
 /**
  * @param string $period
  * @param Campaign $campaign
  * @return array
  *
  * @Route("/plot/{period}/{campaign}", name="orocrm_campaign_event_plot")
  * @AclAncestor("orocrm_campaign_view")
  * @Template
  */
 public function plotAction($period, Campaign $campaign)
 {
     $supportedPeriods = [Campaign::PERIOD_HOURLY, Campaign::PERIOD_DAILY, Campaign::PERIOD_MONTHLY];
     if (!in_array($period, $supportedPeriods)) {
         throw new \InvalidArgumentException(sprintf('Supported periods are: %s. %s given', implode(', ', $supportedPeriods), $period));
     }
     $gridName = sprintf('campaign-tracking-detailed-report-%s-grid', $period);
     if ($period !== Campaign::PERIOD_HOURLY) {
         $gridName .= self::PRECALCULATED_SUFFIX;
     }
     $gridParameters = ['code' => $campaign->getCode(), PagerInterface::PAGER_ROOT_PARAM => [PagerInterface::DISABLED_PARAM => true]];
     $datagrid = $this->get('oro_datagrid.datagrid.manager')->getDatagridByRequestParams($gridName, $gridParameters);
     $chartName = 'campaign_line_chart';
     $chartView = $this->get('oro_chart.view_builder')->setDataGrid($datagrid)->setOptions(array_merge_recursive(['name' => $chartName, 'default_settings' => ['period' => $period]], $this->get('oro_chart.config_provider')->getChartConfig($chartName)))->getView();
     return ['chartView' => $chartView];
 }
Ejemplo n.º 3
0
 public function testCombinedName()
 {
     $campaign = new Campaign();
     $campaign->setName('test name');
     $campaign->setCode('test_code');
     $campaign->prePersist();
     $this->assertEquals('test name (test_code)', $campaign->getCombinedName());
     $campaign->setCode('new_code');
     $campaign->preUpdate();
     $this->assertEquals('test name (new_code)', $campaign->getCombinedName());
 }
Ejemplo n.º 4
0
 protected function createCampaign(array $data, $user)
 {
     $campaign = new Campaign();
     $campaign->setName($data['Name']);
     $campaign->setCode($data['Code']);
     $campaign->setBudget($data['Budget']);
     $campaign->setOwner($user);
     $campaign->setOrganization($this->organization);
     return $campaign;
 }