/** * @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(); }
/** * @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]; }
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()); }
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; }