/**
  * @param MarketingListPerformanceChartDataProvider $chartDataProvider
  * @param string $uniqueId
  * @return string
  */
 public static function renderOverallListPerformanceChartContent(MarketingListPerformanceChartDataProvider $chartDataProvider, $uniqueId)
 {
     assert('is_string($uniqueId)');
     $chartData = $chartDataProvider->getChartData();
     Yii::import('ext.amcharts.AmChartMaker');
     $amChart = new AmChartMaker();
     $amChart->data = $chartData;
     $amChart->id = $uniqueId;
     $amChart->type = ChartRules::TYPE_LINE;
     $amChart->addSerialGraph(MarketingChartDataProvider::UNIQUE_CLICK_THROUGH_RATE, 'column', array('title' => "'" . Zurmo::t('MarketingModule', 'Unique CTR') . "'", 'balloonText' => "'" . Zurmo::t('MarketingModule', 'CTR') . ": [[value]]%'"));
     $amChart->addSerialGraph(MarketingChartDataProvider::UNIQUE_OPEN_RATE, 'column', array('title' => "'" . Zurmo::t('MarketingModule', 'Unique Open Rate') . "'", 'balloonText' => "'" . Zurmo::t('MarketingModule', 'Open Rate') . ": [[value]]%'"));
     $amChart->xAxisName = $chartDataProvider->getXAxisName();
     $amChart->yAxisName = $chartDataProvider->getYAxisName();
     $amChart->addValueAxisProperties('maximum', 100);
     $javascript = $amChart->javascriptChart();
     Yii::app()->getClientScript()->registerScript(__CLASS__ . $uniqueId, $javascript);
     $cClipWidget = new CClipWidget();
     $cClipWidget->beginClip("Chart");
     $cClipWidget->widget('application.core.widgets.AmChart', array('id' => $uniqueId));
     $cClipWidget->endClip();
     return $cClipWidget->getController()->clips['Chart'];
 }
 public function testGetChartData()
 {
     $contact = ContactTestHelper::createContactByNameForOwner('contact01', Yii::app()->user->userModel);
     $this->addCampaignItem($contact, '2013-04-01', array(CampaignItemActivity::TYPE_CLICK => 1, CampaignItemActivity::TYPE_BOUNCE => 0, CampaignItemActivity::TYPE_OPEN => 1, CampaignItemActivity::TYPE_SKIP => 0, CampaignItemActivity::TYPE_UNSUBSCRIBE => 0));
     $campaignChartDataProvider = new MarketingListPerformanceChartDataProvider();
     $campaignChartDataProvider->setBeginDate('2013-04-01');
     $campaignChartDataProvider->setEndDate('2013-04-25');
     $campaignChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_DAY);
     $campaignChartDataProvider->setCampaign($this->campaign);
     $marketingListChartDataProvider = new MarketingListPerformanceChartDataProvider();
     $marketingListChartDataProvider->setBeginDate('2013-04-01');
     $marketingListChartDataProvider->setEndDate('2013-04-25');
     $marketingListChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_DAY);
     $marketingListChartDataProvider->setMarketingList($this->marketingList);
     $combinedChartDataProvider = new MarketingListPerformanceChartDataProvider();
     $combinedChartDataProvider->setBeginDate('2013-04-01');
     $combinedChartDataProvider->setEndDate('2013-04-25');
     $combinedChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_DAY);
     $campaignChartData = $campaignChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 100;
     $expectedArray['uniqueOpenRate'] = 100;
     $expectedArray['displayLabel'] = 'Apr 1';
     $expectedArray['dateBalloonLabel'] = 'Apr 1';
     $this->assertEquals($expectedArray, $campaignChartData[0]);
     $this->assertChartDataForNormalUser($campaignChartDataProvider);
     $marketingListChartData = $marketingListChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 0;
     $expectedArray['uniqueOpenRate'] = 0;
     $expectedArray['displayLabel'] = 'Apr 1';
     $expectedArray['dateBalloonLabel'] = 'Apr 1';
     $this->assertEquals($expectedArray, $marketingListChartData[0]);
     $this->assertChartDataForNormalUser($campaignChartDataProvider);
     $combinedChartData = $combinedChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 100;
     $expectedArray['uniqueOpenRate'] = 100;
     $expectedArray['displayLabel'] = 'Apr 1';
     $expectedArray['dateBalloonLabel'] = 'Apr 1';
     $this->assertEquals($expectedArray, $combinedChartData[0]);
     $this->assertChartDataForNormalUser($campaignChartDataProvider);
     $this->addAutoresponderItem($contact, '2013-04-01', array(CampaignItemActivity::TYPE_CLICK => 1, CampaignItemActivity::TYPE_BOUNCE => 0, CampaignItemActivity::TYPE_OPEN => 0, CampaignItemActivity::TYPE_SKIP => 0, CampaignItemActivity::TYPE_UNSUBSCRIBE => 0));
     $campaignChartData = $campaignChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 100;
     $expectedArray['uniqueOpenRate'] = 100;
     $expectedArray['displayLabel'] = 'Apr 1';
     $expectedArray['dateBalloonLabel'] = 'Apr 1';
     $this->assertEquals($expectedArray, $campaignChartData[0]);
     $this->assertChartDataForNormalUser($marketingListChartDataProvider);
     $marketingListChartData = $marketingListChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 100.0;
     $expectedArray['uniqueOpenRate'] = 0.0;
     $expectedArray['displayLabel'] = 'Apr 1';
     $expectedArray['dateBalloonLabel'] = 'Apr 1';
     $this->assertEquals($expectedArray, $marketingListChartData[0]);
     $this->assertChartDataForNormalUser($marketingListChartDataProvider);
     $combinedChartData = $combinedChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 100.0;
     $expectedArray['uniqueOpenRate'] = 50.0;
     $expectedArray['displayLabel'] = 'Apr 1';
     $expectedArray['dateBalloonLabel'] = 'Apr 1';
     $this->assertEquals($expectedArray, $combinedChartData[0]);
     $this->assertChartDataForNormalUser($marketingListChartDataProvider);
     $contact = ContactTestHelper::createContactByNameForOwner('contact02', Yii::app()->user->userModel);
     $this->addCampaignItem($contact, '2013-04-25', array(CampaignItemActivity::TYPE_CLICK => 0, CampaignItemActivity::TYPE_BOUNCE => 0, CampaignItemActivity::TYPE_OPEN => 0, CampaignItemActivity::TYPE_SKIP => 0, CampaignItemActivity::TYPE_UNSUBSCRIBE => 0));
     $campaignChartData = $campaignChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 0;
     $expectedArray['uniqueOpenRate'] = 0;
     $expectedArray['displayLabel'] = 'Apr 25';
     $expectedArray['dateBalloonLabel'] = 'Apr 25';
     $this->assertEquals($expectedArray, $campaignChartData[24]);
     $this->assertChartDataForNormalUser($campaignChartDataProvider, 24);
     $marketingListChartData = $marketingListChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 0;
     $expectedArray['uniqueOpenRate'] = 0;
     $expectedArray['displayLabel'] = 'Apr 25';
     $expectedArray['dateBalloonLabel'] = 'Apr 25';
     $this->assertEquals($expectedArray, $marketingListChartData[24]);
     $this->assertChartDataForNormalUser($campaignChartDataProvider, 24);
     $combinedChartData = $combinedChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 0;
     $expectedArray['uniqueOpenRate'] = 0;
     $expectedArray['displayLabel'] = 'Apr 25';
     $expectedArray['dateBalloonLabel'] = 'Apr 25';
     $this->assertEquals($expectedArray, $combinedChartData[24]);
     $this->assertChartDataForNormalUser($campaignChartDataProvider, 24);
     $campaignChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_WEEK);
     $marketingListChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_WEEK);
     $combinedChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_WEEK);
     $campaignChartData = $campaignChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 100;
     $expectedArray['uniqueOpenRate'] = 100;
     $expectedArray['displayLabel'] = 'Apr 1';
     $expectedArray['dateBalloonLabel'] = 'Week of Apr 1';
     $this->assertEquals($expectedArray, $campaignChartData[0]);
     $this->assertChartDataForNormalUser($campaignChartDataProvider);
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 0;
     $expectedArray['uniqueOpenRate'] = 0;
     $expectedArray['displayLabel'] = 'Apr 22';
     $expectedArray['dateBalloonLabel'] = 'Week of Apr 22';
     $this->assertEquals($expectedArray, $campaignChartData[3]);
     $this->assertChartDataForNormalUser($campaignChartDataProvider, 3);
     $marketingListChartData = $marketingListChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 100;
     $expectedArray['uniqueOpenRate'] = 0;
     $expectedArray['displayLabel'] = 'Apr 1';
     $expectedArray['dateBalloonLabel'] = 'Week of Apr 1';
     $this->assertEquals($expectedArray, $marketingListChartData[0]);
     $this->assertChartDataForNormalUser($marketingListChartDataProvider);
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 0;
     $expectedArray['uniqueOpenRate'] = 0;
     $expectedArray['displayLabel'] = 'Apr 22';
     $expectedArray['dateBalloonLabel'] = 'Week of Apr 22';
     $this->assertEquals($expectedArray, $marketingListChartData[3]);
     $this->assertChartDataForNormalUser($marketingListChartDataProvider, 3);
     $combinedChartData = $combinedChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 100;
     $expectedArray['uniqueOpenRate'] = 50;
     $expectedArray['displayLabel'] = 'Apr 1';
     $expectedArray['dateBalloonLabel'] = 'Week of Apr 1';
     $this->assertEquals($expectedArray, $combinedChartData[0]);
     $this->assertChartDataForNormalUser($combinedChartDataProvider);
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 0;
     $expectedArray['uniqueOpenRate'] = 0;
     $expectedArray['displayLabel'] = 'Apr 22';
     $expectedArray['dateBalloonLabel'] = 'Week of Apr 22';
     $this->assertEquals($expectedArray, $combinedChartData[3]);
     $this->assertChartDataForNormalUser($combinedChartDataProvider, 3);
     $campaignChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_MONTH);
     $marketingListChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_MONTH);
     $combinedChartDataProvider->setGroupBy(MarketingOverallMetricsForm::GROUPING_TYPE_MONTH);
     $campaignChartData = $campaignChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 50;
     $expectedArray['uniqueOpenRate'] = 50;
     $expectedArray['displayLabel'] = 'Apr';
     $expectedArray['dateBalloonLabel'] = 'Apr';
     $this->assertEquals($expectedArray, $campaignChartData[0]);
     $this->assertChartDataForNormalUser($campaignChartDataProvider);
     $marketingListChartData = $marketingListChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 100;
     $expectedArray['uniqueOpenRate'] = 0;
     $expectedArray['displayLabel'] = 'Apr';
     $expectedArray['dateBalloonLabel'] = 'Apr';
     $this->assertEquals($expectedArray, $marketingListChartData[0]);
     $this->assertChartDataForNormalUser($marketingListChartDataProvider);
     $combinedChartData = $combinedChartDataProvider->getChartData();
     $expectedArray = array();
     $expectedArray['uniqueClickThroughRate'] = 66.67;
     $expectedArray['uniqueOpenRate'] = 33.33;
     $expectedArray['displayLabel'] = 'Apr';
     $expectedArray['dateBalloonLabel'] = 'Apr';
     $this->assertEquals($expectedArray, $combinedChartData[0]);
     $this->assertChartDataForNormalUser($combinedChartDataProvider);
 }