protected function resolveDrillDownDetailsData($report)
 {
     $pageSize = Yii::app()->pagination->resolveActiveForCurrentUserByType('reportResultsSubListPageSize', $report->getModuleClassName());
     $dataProvider = ReportDataProviderFactory::makeForSummationDrillDown($report, $pageSize);
     $totalItems = intval($dataProvider->calculateTotalItemCount());
     $dataProvider->getPagination()->setPageSize($totalItems);
     $reportToExportAdapter = ReportToExportAdapterFactory::createReportToExportAdapter($report, $dataProvider);
     $drillDownHeaderData = $reportToExportAdapter->getHeaderData();
     $drillDownData = $reportToExportAdapter->getData();
     $this->data[] = array_merge(array(null), $drillDownHeaderData);
     if (!empty($drillDownData)) {
         foreach ($drillDownData as $row) {
             $this->data[] = array_merge(array(null), $row);
         }
     }
 }
 public function actionExport($id, $stickySearchKey = null)
 {
     assert('$stickySearchKey == null || is_string($stickySearchKey)');
     $savedReport = SavedReport::getById((int) $id);
     ControllerSecurityUtil::resolveCanCurrentUserAccessModule($savedReport->moduleClassName);
     ControllerSecurityUtil::resolveAccessCanCurrentUserReadModel($savedReport);
     $report = SavedReportToReportAdapter::makeReportBySavedReport($savedReport);
     $dataProvider = $this->getDataProviderForExport($report, $report->getId(), false);
     $totalItems = intval($dataProvider->calculateTotalItemCount());
     $data = array();
     if ($totalItems > 0) {
         if ($totalItems <= ExportModule::$asynchronousThreshold) {
             // Output csv file directly to user browser
             if ($dataProvider) {
                 $reportToExportAdapter = ReportToExportAdapterFactory::createReportToExportAdapter($report, $dataProvider);
                 $headerData = $reportToExportAdapter->getHeaderData();
                 $data = $reportToExportAdapter->getData();
             }
             // Output data
             if (count($data)) {
                 $fileName = $this->getModule()->getName() . ".csv";
                 ExportItemToCsvFileUtil::export($data, $headerData, $fileName, true);
             } else {
                 Yii::app()->user->setFlash('notification', Zurmo::t('ZurmoModule', 'There is no data to export.'));
             }
         } else {
             if ($dataProvider) {
                 $serializedData = ExportUtil::getSerializedDataForExport($dataProvider);
             }
             // Create background job
             $exportItem = new ExportItem();
             $exportItem->isCompleted = 0;
             $exportItem->exportFileType = 'csv';
             $exportItem->exportFileName = $this->getModule()->getName();
             $exportItem->modelClassName = 'SavedReport';
             $exportItem->serializedData = $serializedData;
             $exportItem->save();
             $exportItem->forget();
             Yii::app()->user->setFlash('notification', Zurmo::t('ZurmoModule', 'A large amount of data has been requested for export.  You will receive ' . 'a notification with the download link when the export is complete.'));
         }
     } else {
         Yii::app()->user->setFlash('notification', Zurmo::t('ZurmoModule', 'There is no data to export.'));
     }
     $this->redirect(array($this->getId() . '/index'));
 }
 public function testViaSelectAndViaModelTogether()
 {
     $reportModelTestItem = new ReportModelTestItem();
     $reportModelTestItem->string = 'string';
     $reportModelTestItem->lastName = 'lastName';
     $reportModelTestItem->integer = 9000;
     $reportModelTestItem->boolean = true;
     $this->assertTrue($reportModelTestItem->save());
     $report = new Report();
     $report->setType(Report::TYPE_SUMMATION);
     $report->setModuleClassName('ReportsTestModule');
     $report->setFiltersStructure('');
     //viaSelect attribute
     $displayAttribute1 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute1->attributeIndexOrDerivedType = 'integer__Minimum';
     $displayAttribute1->madeViaSelectInsteadOfViaModel = true;
     $this->assertTrue($displayAttribute1->columnAliasName == 'col0');
     $report->addDisplayAttribute($displayAttribute1);
     //viaModel attribute
     $reportModelTestItem->boolean = true;
     $displayAttribute2 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute2->setModelAliasUsingTableAliasName('model1');
     $displayAttribute2->attributeIndexOrDerivedType = 'boolean';
     $report->addDisplayAttribute($displayAttribute2);
     $dataProvider = new SummationReportDataProvider($report);
     $adapter = ReportToExportAdapterFactory::createReportToExportAdapter($report, $dataProvider);
     $compareHeaderData = array('Integer -(Min)', 'Boolean');
     $compareRowData = array(array(9000, true), array('Total'));
     $this->assertEquals($compareHeaderData, $adapter->getHeaderData());
     $this->assertEquals($compareRowData, $adapter->getData());
     $reportModelTestItem->delete();
 }
 public function testGetLeadingHeadersDataFromMatrixReportDataProviderWithALinkableAttribute()
 {
     $reportModelTestItem2 = new ReportModelTestItem2();
     $reportModelTestItem2->name = 'report name';
     $reportModelTestItem2->phone = '123456789';
     $this->assertTrue($reportModelTestItem2->save());
     $reportModelTestItem2 = new ReportModelTestItem2();
     $reportModelTestItem2->name = 'report name';
     $reportModelTestItem2->phone = '987654321';
     $this->assertTrue($reportModelTestItem2->save());
     $report = new Report();
     $report->setType(Report::TYPE_MATRIX);
     $report->setModuleClassName('ReportsTest2Module');
     $report->setFiltersStructure('');
     $displayAttribute = new DisplayAttributeForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_MATRIX);
     $displayAttribute->attributeIndexOrDerivedType = 'Count';
     $report->addDisplayAttribute($displayAttribute);
     $groupBy = new GroupByForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_MATRIX);
     $groupBy->attributeIndexOrDerivedType = 'phone';
     $report->addGroupBy($groupBy);
     $groupBy = new GroupByForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_MATRIX);
     $groupBy->attributeIndexOrDerivedType = 'name';
     $groupBy->axis = 'y';
     $report->addGroupBy($groupBy);
     $dataProvider = new MatrixReportDataProvider($report);
     $adapter = ReportToExportAdapterFactory::createReportToExportAdapter($report, $dataProvider);
     $compareRowData = array(array(null, '123456789', '987654321', 'Total'), array('Name', 'Count', 'Count', 'Count'), array('report name', 1, 1, 2), array('Total', 1, 1));
     $this->assertEmpty($adapter->getHeaderData());
     $this->assertEquals($compareRowData, $adapter->getData());
     $report = new Report();
     $report->setType(Report::TYPE_MATRIX);
     $report->setModuleClassName('ReportsTest2Module');
     $report->setFiltersStructure('');
     $displayAttribute = new DisplayAttributeForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_MATRIX);
     $displayAttribute->attributeIndexOrDerivedType = 'Count';
     $report->addDisplayAttribute($displayAttribute);
     $groupBy = new GroupByForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_MATRIX);
     $groupBy->attributeIndexOrDerivedType = 'name';
     $report->addGroupBy($groupBy);
     $groupBy = new GroupByForReportForm('ReportsTest2Module', 'ReportModelTestItem2', Report::TYPE_MATRIX);
     $groupBy->attributeIndexOrDerivedType = 'phone';
     $groupBy->axis = 'y';
     $report->addGroupBy($groupBy);
     $dataProvider = new MatrixReportDataProvider($report);
     $adapter = ReportToExportAdapterFactory::createReportToExportAdapter($report, $dataProvider);
     $compareRowData = array(array(null, 'report name', 'Total'), array('Phone', 'Count', 'Count'), array('123456789', 1, 1), array('987654321', 1, 1), array('Total', 2));
     $this->assertEmpty($adapter->getHeaderData());
     $this->assertEquals($compareRowData, $adapter->getData());
 }
Esempio n. 5
0
 protected function processReportExportPage(ReportDataProvider $dataProvider, $offset, &$headerData, &$data, $resolveForHeader)
 {
     assert('is_int($offset)');
     assert('is_bool($resolveForHeader)');
     $dataProvider->offset = $offset;
     $reportToExportAdapter = ReportToExportAdapterFactory::createReportToExportAdapter($dataProvider->getReport(), $dataProvider);
     $rows = $reportToExportAdapter->getData();
     $rowsCount = count($rows);
     $this->totalModelsProcessed = $this->totalModelsProcessed + $rowsCount;
     if (count($headerData) == 0 && $resolveForHeader) {
         $headerData = array_merge($headerData, $reportToExportAdapter->getHeaderData());
     }
     if (is_array($rows)) {
         $data = array_merge($data, $rows);
     }
     $this->getMessageLogger()->addInfoMessage(Zurmo::t('ExportModule', 'processExportPage: rows processed: {count} ' . 'with asynchronousPageSize of {pageSize}', array('{count}' => $this->totalModelsProcessed, '{pageSize}' => $this->getAsynchronousPageSize())));
     if ($rowsCount >= $this->getAsynchronousPageSize()) {
         return true;
     }
     return false;
 }
 public function actionExportpdf($id, $stickySearchKey = null)
 {
     assert('$stickySearchKey == null || is_string($stickySearchKey)');
     $savedReport = SavedReport::getById((int) $id);
     ControllerSecurityUtil::resolveCanCurrentUserAccessModule($savedReport->moduleClassName);
     ControllerSecurityUtil::resolveAccessCanCurrentUserReadModel($savedReport);
     $report = SavedReportToReportAdapter::makeReportBySavedReport($savedReport);
     $dataProvider = $this->getDataProviderForExport($report, $report->getId(), false);
     $totalItems = intval($dataProvider->calculateTotalItemCount());
     $data = array();
     if ($totalItems > 0) {
         $reportToExportAdapter = ReportToExportAdapterFactory::createReportToExportAdapter($report, $dataProvider);
         $headerData = $reportToExportAdapter->getHeaderData();
         $data = $reportToExportAdapter->getData();
         $mPDF1 = Yii::app()->ePdf->mpdf('utf-8', 'Letter');
         $pdfdata = '<table border="1" style="border-collapse:collapse;" cellpadding="0" cellspacing="1"><tbody><tr>';
         foreach ($headerData as $key => $value) {
             $pdfdata .= '<td>' . $value . '</td>';
         }
         $pdfdata .= '</tr>';
         foreach ($data as $key => $value) {
             $pdfdata .= '<tr>';
             foreach ($value as $key1 => $value1) {
                 $pdfdata .= '<td>' . $value1 . '</td>';
             }
             $pdfdata .= '</tr>';
         }
         $pdfdata .= '</tbody></table>';
         $mPDF1->WriteHTML($pdfdata);
         $mPDF1->Output($this->getModule()->getName() . '.pdf', 'D');
     } else {
         Yii::app()->user->setFlash('notification', Zurmo::t('ZurmoModule', 'There is no data to export.'));
     }
     $this->redirect(array($this->getId() . '/index'));
 }
 public function testGetDataWithNoRelationsSet()
 {
     $values = array('Test1', 'Test2', 'Test3', 'Sample', 'Demo');
     $customFieldData = CustomFieldData::getByName('ReportTestDropDown');
     $customFieldData->serializedData = serialize($values);
     $saved = $customFieldData->save();
     $this->assertTrue($saved);
     //for fullname attribute  (derived attribute)
     $reportModelTestItem1 = new ReportModelTestItem();
     $reportModelTestItem1->firstName = 'xFirst';
     $reportModelTestItem1->lastName = 'xLast';
     $reportModelTestItem1->boolean = true;
     $reportModelTestItem1->date = '2013-02-12';
     $reportModelTestItem1->dateTime = '2013-02-12 10:15:00';
     $reportModelTestItem1->float = 10.5;
     $reportModelTestItem1->integer = 10;
     $reportModelTestItem1->phone = '7842151012';
     $reportModelTestItem1->string = 'xString';
     $reportModelTestItem1->textArea = 'xtextAreatest';
     $reportModelTestItem1->url = 'http://www.test.com';
     $reportModelTestItem1->dropDown->value = $values[1];
     $currencies = Currency::getAll();
     $currencyValue = new CurrencyValue();
     $currencyValue->value = 100;
     $currencyValue->currency = $currencies[0];
     $this->assertEquals('USD', $currencyValue->currency->code);
     $reportModelTestItem1->currencyValue = $currencyValue;
     $reportModelTestItem1->primaryAddress->street1 = 'someString';
     $reportModelTestItem1->primaryEmail->emailAddress = "*****@*****.**";
     $customFieldValue = new CustomFieldValue();
     $customFieldValue->value = 'Multi 1';
     $reportModelTestItem1->multiDropDown->values->add($customFieldValue);
     $customFieldValue = new CustomFieldValue();
     $customFieldValue->value = 'Multi 2';
     $reportModelTestItem1->multiDropDown->values->add($customFieldValue);
     $customFieldValue = new CustomFieldValue();
     $customFieldValue->value = 'Cloud 2';
     $reportModelTestItem1->tagCloud->values->add($customFieldValue);
     $customFieldValue = new CustomFieldValue();
     $customFieldValue->value = 'Cloud 3';
     $reportModelTestItem1->tagCloud->values->add($customFieldValue);
     $reportModelTestItem1->radioDropDown->value = $values[1];
     $reportModelTestItem7 = new ReportModelTestItem7();
     $reportModelTestItem7->name = 'someName';
     $reportModelTestItem1->likeContactState = $reportModelTestItem7;
     $reportModelTestItem1->owner = Yii::app()->user->userModel;
     $saved = $reportModelTestItem1->save();
     $this->assertTrue($saved);
     $reportModelTestItem2 = new ReportModelTestItem();
     $reportModelTestItem2->firstName = 'xFirst';
     $reportModelTestItem2->lastName = 'xLast';
     $reportModelTestItem2->boolean = true;
     $reportModelTestItem2->date = '2013-02-14';
     $reportModelTestItem2->dateTime = '2013-02-14 23:15:00';
     $reportModelTestItem2->float = 200.5;
     $reportModelTestItem2->integer = 1010;
     $reportModelTestItem2->phone = '7842151012';
     $reportModelTestItem2->string = 'xString';
     $reportModelTestItem2->textArea = 'xtextAreatest';
     $reportModelTestItem2->url = 'http://www.test.com';
     $reportModelTestItem2->dropDown->value = $values[1];
     $reportModelTestItem2->currencyValue = $currencyValue;
     $reportModelTestItem2->primaryAddress->street1 = 'someString';
     $reportModelTestItem2->primaryEmail->emailAddress = "*****@*****.**";
     $reportModelTestItem2->multiDropDown->values->add($customFieldValue);
     $reportModelTestItem2->tagCloud->values->add($customFieldValue);
     $reportModelTestItem2->radioDropDown->value = $values[1];
     $reportModelTestItem2->likeContactState = $reportModelTestItem7;
     $reportModelTestItem2->owner = Yii::app()->user->userModel;
     $saved = $reportModelTestItem2->save();
     $this->assertTrue($saved);
     $report = new Report();
     $report->setType(Report::TYPE_SUMMATION);
     $report->setModuleClassName('ReportsTestModule');
     $report->setFiltersStructure('');
     //for date summation
     $displayAttribute1 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute1->attributeIndexOrDerivedType = 'date__Maximum';
     $displayAttribute1->madeViaSelectInsteadOfViaModel = true;
     $this->assertTrue($displayAttribute1->columnAliasName == 'col0');
     $report->addDisplayAttribute($displayAttribute1);
     $displayAttribute2 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute2->attributeIndexOrDerivedType = 'date__Minimum';
     $displayAttribute2->madeViaSelectInsteadOfViaModel = true;
     $this->assertTrue($displayAttribute2->columnAliasName == 'col1');
     $report->addDisplayAttribute($displayAttribute2);
     //for dateTime summation
     $displayAttribute3 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute3->attributeIndexOrDerivedType = 'dateTime__Maximum';
     $displayAttribute3->madeViaSelectInsteadOfViaModel = true;
     $this->assertTrue($displayAttribute3->columnAliasName == 'col2');
     $report->addDisplayAttribute($displayAttribute3);
     $displayAttribute4 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute4->attributeIndexOrDerivedType = 'dateTime__Minimum';
     $displayAttribute4->madeViaSelectInsteadOfViaModel = true;
     $this->assertTrue($displayAttribute4->columnAliasName == 'col3');
     $report->addDisplayAttribute($displayAttribute4);
     //for createdDateTime summation
     $displayAttribute5 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute5->attributeIndexOrDerivedType = 'createdDateTime__Maximum';
     $displayAttribute5->madeViaSelectInsteadOfViaModel = true;
     $this->assertTrue($displayAttribute5->columnAliasName == 'col4');
     $report->addDisplayAttribute($displayAttribute5);
     $displayAttribute6 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute6->attributeIndexOrDerivedType = 'createdDateTime__Minimum';
     $displayAttribute6->madeViaSelectInsteadOfViaModel = true;
     $this->assertTrue($displayAttribute6->columnAliasName == 'col5');
     $report->addDisplayAttribute($displayAttribute6);
     //for modifiedDateTime summation
     $displayAttribute7 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute7->attributeIndexOrDerivedType = 'modifiedDateTime__Maximum';
     $displayAttribute7->madeViaSelectInsteadOfViaModel = true;
     $this->assertTrue($displayAttribute7->columnAliasName == 'col6');
     $report->addDisplayAttribute($displayAttribute7);
     $displayAttribute8 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute8->attributeIndexOrDerivedType = 'modifiedDateTime__Minimum';
     $displayAttribute8->madeViaSelectInsteadOfViaModel = true;
     $this->assertTrue($displayAttribute8->columnAliasName == 'col7');
     $report->addDisplayAttribute($displayAttribute8);
     //for float summation
     $displayAttribute9 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute9->attributeIndexOrDerivedType = 'float__Minimum';
     $displayAttribute9->madeViaSelectInsteadOfViaModel = true;
     $this->assertTrue($displayAttribute9->columnAliasName == 'col8');
     $report->addDisplayAttribute($displayAttribute9);
     $displayAttribute10 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute10->attributeIndexOrDerivedType = 'float__Maximum';
     $displayAttribute10->madeViaSelectInsteadOfViaModel = true;
     $this->assertTrue($displayAttribute10->columnAliasName == 'col9');
     $report->addDisplayAttribute($displayAttribute10);
     $displayAttribute11 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute11->attributeIndexOrDerivedType = 'float__Summation';
     $displayAttribute11->madeViaSelectInsteadOfViaModel = true;
     $this->assertTrue($displayAttribute11->columnAliasName == 'col10');
     $report->addDisplayAttribute($displayAttribute11);
     $displayAttribute12 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute12->attributeIndexOrDerivedType = 'float__Average';
     $displayAttribute12->madeViaSelectInsteadOfViaModel = true;
     $this->assertTrue($displayAttribute12->columnAliasName == 'col11');
     $report->addDisplayAttribute($displayAttribute12);
     //for integer summation
     $displayAttribute13 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute13->attributeIndexOrDerivedType = 'integer__Minimum';
     $displayAttribute13->madeViaSelectInsteadOfViaModel = true;
     $this->assertTrue($displayAttribute13->columnAliasName == 'col12');
     $report->addDisplayAttribute($displayAttribute13);
     $displayAttribute14 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute14->attributeIndexOrDerivedType = 'integer__Maximum';
     $displayAttribute14->madeViaSelectInsteadOfViaModel = true;
     $this->assertTrue($displayAttribute14->columnAliasName == 'col13');
     $report->addDisplayAttribute($displayAttribute14);
     $displayAttribute15 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute15->attributeIndexOrDerivedType = 'integer__Summation';
     $displayAttribute15->madeViaSelectInsteadOfViaModel = true;
     $this->assertTrue($displayAttribute15->columnAliasName == 'col14');
     $report->addDisplayAttribute($displayAttribute15);
     $displayAttribute16 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute16->attributeIndexOrDerivedType = 'integer__Average';
     $displayAttribute16->madeViaSelectInsteadOfViaModel = true;
     $this->assertTrue($displayAttribute16->columnAliasName == 'col15');
     $report->addDisplayAttribute($displayAttribute16);
     //for currency summation
     $displayAttribute17 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute17->attributeIndexOrDerivedType = 'currencyValue__Minimum';
     $displayAttribute17->madeViaSelectInsteadOfViaModel = true;
     $this->assertTrue($displayAttribute17->columnAliasName == 'col16');
     $report->addDisplayAttribute($displayAttribute17);
     $displayAttribute18 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute18->attributeIndexOrDerivedType = 'currencyValue__Maximum';
     $displayAttribute18->madeViaSelectInsteadOfViaModel = true;
     $this->assertTrue($displayAttribute18->columnAliasName == 'col17');
     $report->addDisplayAttribute($displayAttribute18);
     $displayAttribute19 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute19->attributeIndexOrDerivedType = 'currencyValue__Summation';
     $displayAttribute19->madeViaSelectInsteadOfViaModel = true;
     $this->assertTrue($displayAttribute19->columnAliasName == 'col18');
     $report->addDisplayAttribute($displayAttribute19);
     $displayAttribute20 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute20->attributeIndexOrDerivedType = 'currencyValue__Average';
     $displayAttribute20->madeViaSelectInsteadOfViaModel = true;
     $this->assertTrue($displayAttribute20->columnAliasName == 'col19');
     $report->addDisplayAttribute($displayAttribute20);
     $dataProvider = new SummationReportDataProvider($report);
     $adapter = ReportToExportAdapterFactory::createReportToExportAdapter($report, $dataProvider);
     $compareHeaderData = array('Date -(Max)', 'Date -(Min)', 'Date Time -(Max)', 'Date Time -(Min)', 'Created Date Time -(Max)', 'Created Date Time -(Min)', 'Modified Date Time -(Max)', 'Modified Date Time -(Min)', 'Float -(Min)', 'Float -(Max)', 'Float -(Sum)', 'Float -(Avg)', 'Integer -(Min)', 'Integer -(Max)', 'Integer -(Sum)', 'Integer -(Avg)', 'Currency Value -(Min)', 'Currency Value -(Min) Currency', 'Currency Value -(Max)', 'Currency Value -(Max) Currency', 'Currency Value -(Sum)', 'Currency Value -(Sum) Currency', 'Currency Value -(Avg)', 'Currency Value -(Avg) Currency');
     $compareRowData = array(array('2013-02-14', '2013-02-12', '2013-02-14 23:15:00', '2013-02-12 10:15:00', $reportModelTestItem2->createdDateTime, $reportModelTestItem1->createdDateTime, $reportModelTestItem2->modifiedDateTime, $reportModelTestItem1->modifiedDateTime, 10.5, 200.5, 211, 105.5, 10, 1010, 1020, 510, 100, 'Mixed Currency', 100, 'Mixed Currency', 200, 'Mixed Currency', 100, 'Mixed Currency'), array('Total', '2013-02-12', '2013-02-14 23:15:00', '2013-02-12 10:15:00', $reportModelTestItem2->createdDateTime, $reportModelTestItem1->createdDateTime, $reportModelTestItem2->modifiedDateTime, $reportModelTestItem1->modifiedDateTime, 10.5, 200.5, 211, 105.5, 10, 1010, 1020, 510, 100, '', 100, '', 200, '', 100, ''));
     $this->assertEquals($compareHeaderData, $adapter->getHeaderData());
     $this->assertEquals($compareRowData, $adapter->getData());
     //With drill down
     $groupBy = new GroupByForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $groupBy->attributeIndexOrDerivedType = 'firstName';
     $report->addGroupBy($groupBy);
     $drillDownDisplayAttribute1 = new DrillDownDisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $drillDownDisplayAttribute1->attributeIndexOrDerivedType = 'float';
     $report->addDrillDownDisplayAttribute($drillDownDisplayAttribute1);
     $drillDownDisplayAttribute2 = new DrillDownDisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $drillDownDisplayAttribute2->attributeIndexOrDerivedType = 'integer';
     $report->addDrillDownDisplayAttribute($drillDownDisplayAttribute2);
     $dataProvider = new SummationReportDataProvider($report);
     $adapter = ReportToExportAdapterFactory::createReportToExportAdapter($report, $dataProvider);
     $compareHeaderData = array('Date -(Max)', 'Date -(Min)', 'Date Time -(Max)', 'Date Time -(Min)', 'Created Date Time -(Max)', 'Created Date Time -(Min)', 'Modified Date Time -(Max)', 'Modified Date Time -(Min)', 'Float -(Min)', 'Float -(Max)', 'Float -(Sum)', 'Float -(Avg)', 'Integer -(Min)', 'Integer -(Max)', 'Integer -(Sum)', 'Integer -(Avg)', 'Currency Value -(Min)', 'Currency Value -(Min) Currency', 'Currency Value -(Max)', 'Currency Value -(Max) Currency', 'Currency Value -(Sum)', 'Currency Value -(Sum) Currency', 'Currency Value -(Avg)', 'Currency Value -(Avg) Currency', 'First Name');
     $compareRowData = array(array('2013-02-14', '2013-02-12', '2013-02-14 23:15:00', '2013-02-12 10:15:00', $reportModelTestItem2->createdDateTime, $reportModelTestItem1->createdDateTime, $reportModelTestItem2->modifiedDateTime, $reportModelTestItem1->modifiedDateTime, 10.5, 200.5, 211, 105.5, 10, 1010, 1020, 510, 100, 'Mixed Currency', 100, 'Mixed Currency', 200, 'Mixed Currency', 100, 'Mixed Currency', 'xFirst'), array(null, 'Float', 'Integer'), array(null, '10.5', '10'), array(null, '200.5', '1010'), array('Total', '2013-02-12', '2013-02-14 23:15:00', '2013-02-12 10:15:00', $reportModelTestItem2->createdDateTime, $reportModelTestItem1->createdDateTime, $reportModelTestItem2->modifiedDateTime, $reportModelTestItem1->modifiedDateTime, 10.5, 200.5, 211, 105.5, 10, 1010, 1020, 510, 100, '', 100, '', 200, '', 100, ''));
     $this->assertEquals($compareHeaderData, $adapter->getHeaderData());
     $this->assertEquals($compareRowData, $adapter->getData());
 }
 public function testExportRelationAttributes()
 {
     $report = new Report();
     $report->setType(Report::TYPE_ROWS_AND_COLUMNS);
     $report->setModuleClassName('EmailMessagesModule');
     $report->setFiltersStructure('');
     $emailMessage = new EmailMessage();
     $emailMessage->owner = Yii::app()->user->userModel;
     $emailMessage->subject = 'A test email';
     $emailContent = new EmailMessageContent();
     $emailContent->textContent = 'A test text message from Zurmo.';
     $emailContent->htmlContent = 'A test text message from Zurmo.';
     $emailMessage->content = $emailContent;
     $sender = new EmailMessageSender();
     $sender->fromAddress = '*****@*****.**';
     $sender->fromName = 'super';
     $sender->personsOrAccounts->add(Yii::app()->user->userModel);
     $emailMessage->sender = $sender;
     $recipient = new EmailMessageRecipient();
     $recipient->toAddress = '*****@*****.**';
     $recipient->toName = 'Test Recipient';
     $recipient->type = EmailMessageRecipient::TYPE_TO;
     $emailMessage->recipients->add($recipient);
     $box = EmailBox::resolveAndGetByName(EmailBox::NOTIFICATIONS_NAME);
     $emailMessage->folder = EmailFolder::getByBoxAndType($box, EmailFolder::TYPE_SENT);
     $this->assertTrue($emailMessage->save());
     $displayAttribute1 = new DisplayAttributeForReportForm('EmailMessagesModule', 'EmailMessage', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute1->setModelAliasUsingTableAliasName('relatedModel');
     $displayAttribute1->attributeIndexOrDerivedType = 'sender___User__personsOrAccounts__Inferred___firstName';
     $report->addDisplayAttribute($displayAttribute1);
     $displayAttribute2 = new DisplayAttributeForReportForm('EmailMessagesModule', 'EmailMessage', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute2->setModelAliasUsingTableAliasName('relatedModel');
     $displayAttribute2->attributeIndexOrDerivedType = 'sender___Contact__personsOrAccounts__Inferred___firstName';
     $report->addDisplayAttribute($displayAttribute2);
     $dataProvider = new RowsAndColumnsReportDataProvider($report);
     $adapter = ReportToExportAdapterFactory::createReportToExportAdapter($report, $dataProvider);
     $compareHeaderData = array('Sender >> Users >> First Name', 'Sender >> Contacts >> First Name');
     $compareRowData = array(array('Clark', ''));
     $this->assertEquals($compareHeaderData, $adapter->getHeaderData());
     $this->assertEquals($compareRowData, $adapter->getData());
 }