protected function resolveSavedReportAndReportByPostData(array $postData, &$savedReport, &$report, $type, $id = null, $isBeingCopied = false) { if ($id == null) { $this->resolveCanCurrentUserAccessReports(); $savedReport = new SavedReport(); $report = new Report(); $report->setType($type); } elseif ($isBeingCopied) { $savedReport = new SavedReport(); $oldReport = SavedReport::getById(intval($id)); ControllerSecurityUtil::resolveAccessCanCurrentUserReadModel($oldReport); SavedReportCopyModelUtil::copy($oldReport, $savedReport); $report = SavedReportToReportAdapter::makeReportBySavedReport($savedReport); } else { $savedReport = SavedReport::getById(intval($id)); ControllerSecurityUtil::resolveAccessCanCurrentUserWriteModel($savedReport); $report = SavedReportToReportAdapter::makeReportBySavedReport($savedReport); } DataToReportUtil::resolveReportByWizardPostData($report, $postData, ReportToWizardFormAdapter::getFormClassNameByType($type)); }
public function testSummationResolveReportByWizardPostData() { $bobby = User::getByUserName('bobby'); $wizardFormClassName = 'SummationReportWizardForm'; $report = new Report(); $report->setType(Report::TYPE_SUMMATION); $data = array(); $data['moduleClassName'] = 'ReportsTestModule'; $data['description'] = 'a description'; $data['name'] = 'name'; $data['filtersStructure'] = '1 AND 2'; $data['ownerId'] = $bobby->id; $data['currencyConversionType'] = Report::CURRENCY_CONVERSION_TYPE_SPOT; $data['spotConversionCurrencyCode'] = 'EUR'; $data[ComponentForReportForm::TYPE_FILTERS][] = array('attributeIndexOrDerivedType' => 'date', 'valueType' => 'Between', 'value' => '2/24/2012', 'secondValue' => '2/28/2012'); $data[ComponentForReportForm::TYPE_ORDER_BYS][] = array('attributeIndexOrDerivedType' => 'string', 'order' => 'desc'); $data[ComponentForReportForm::TYPE_DISPLAY_ATTRIBUTES][] = array('attributeIndexOrDerivedType' => 'phone', 'label' => 'custom'); $data[ComponentForReportForm::TYPE_DRILL_DOWN_DISPLAY_ATTRIBUTES][] = array('attributeIndexOrDerivedType' => 'string', 'label' => 'custom string'); $data[ComponentForReportForm::TYPE_GROUP_BYS][] = array('attributeIndexOrDerivedType' => 'string', 'axis' => 'y'); $data['ChartForReportForm'] = array('type' => ChartRules::TYPE_BAR_2D, 'firstSeries' => 'string', 'firstRange' => 'integer__Maximum'); DataToReportUtil::resolveReportByWizardPostData($report, array('SummationReportWizardForm' => $data), $wizardFormClassName); $this->assertEquals('ReportsTestModule', $report->getModuleClassName()); $this->assertEquals('a description', $report->getDescription()); $this->assertEquals('name', $report->getName()); $this->assertEquals('1 AND 2', $report->getFiltersStructure()); $this->assertEquals($bobby->id, $report->getOwner()->id); $this->assertEquals(Report::CURRENCY_CONVERSION_TYPE_SPOT, $report->getCurrencyConversionType()); $this->assertEquals('EUR', $report->getSpotConversionCurrencyCode()); $filters = $report->getFilters(); $this->assertCount(1, $filters); $this->assertEquals('date', $filters[0]->getAttributeIndexOrDerivedType()); $this->assertEquals('Between', $filters[0]->valueType); $this->assertEquals('2012-02-24', $filters[0]->value); $this->assertEquals('2012-02-28', $filters[0]->secondValue); $orderBys = $report->getOrderBys(); $this->assertCount(1, $orderBys); $this->assertEquals('string', $orderBys[0]->getAttributeIndexOrDerivedType()); $this->assertEquals('desc', $orderBys[0]->order); $displayAttributes = $report->getDisplayAttributes(); $this->assertCount(1, $displayAttributes); $this->assertEquals('phone', $displayAttributes[0]->getAttributeIndexOrDerivedType()); $this->assertEquals('custom', $displayAttributes[0]->label); $groupBys = $report->getGroupBys(); $this->assertCount(1, $groupBys); $this->assertEquals('string', $groupBys[0]->getAttributeIndexOrDerivedType()); $this->assertEquals('y', $groupBys[0]->axis); $drillDownDisplayAttributes = $report->getDrillDownDisplayAttributes(); $this->assertCount(1, $drillDownDisplayAttributes); $this->assertEquals('string', $drillDownDisplayAttributes[0]->getAttributeIndexOrDerivedType()); $this->assertEquals('custom string', $drillDownDisplayAttributes[0]->label); $chart = $report->getChart(); $this->assertEquals(ChartRules::TYPE_BAR_2D, $chart->type); $this->assertEquals('string', $chart->firstSeries); $this->assertEquals('integer__Maximum', $chart->firstRange); }
/** * Resolve report by saved calendar post data. * @param string $type * @param int $id * @param array $postData * @return Report */ public static function resolveReportBySavedCalendarPostData($type, $id = null, $postData) { assert('is_string($type)'); assert('is_array($postData)'); if ($id == null) { $report = new Report(); $report->setType($type); } else { $savedCalendar = SavedCalendar::getById(intval($id)); ControllerSecurityUtil::resolveAccessCanCurrentUserWriteModel($savedCalendar); $report = SavedCalendarToReportAdapter::makeReportBySavedCalendar($savedCalendar); } if (isset($postData['SavedCalendar']) && isset($postData['SavedCalendar']['moduleClassName'])) { $report->setModuleClassName($postData['SavedCalendar']['moduleClassName']); } else { throw new NotSupportedException(); } DataToReportUtil::resolveReportByWizardPostData($report, $postData, ReportToWizardFormAdapter::getFormClassNameByType($type)); return $report; }