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()); }
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()); }