/**
  * @param ReportWizardForm $formModel
  */
 protected function setCommonAttributes(ReportWizardForm $formModel)
 {
     $formModel->id = $this->report->getId();
     $formModel->description = $this->report->getDescription();
     $formModel->moduleClassName = $this->report->getModuleClassName();
     if ($this->report->getOwner()->id > 0) {
         $formModel->ownerId = (int) $this->report->getOwner()->id;
         $formModel->ownerName = strval($this->report->getOwner());
     }
     $formModel->name = $this->report->getName();
     $formModel->type = $this->report->getType();
     $formModel->filtersStructure = $this->report->getFiltersStructure();
     $formModel->currencyConversionType = $this->report->getCurrencyConversionType();
     $formModel->spotConversionCurrencyCode = $this->report->getSpotConversionCurrencyCode();
     if ($this->report->isNew()) {
         $formModel->setIsNew();
     }
     $formModel->setExplicitReadWriteModelPermissions($this->report->getExplicitReadWriteModelPermissions());
     $formModel->filters = $this->report->getFilters();
     $formModel->orderBys = $this->report->getOrderBys();
     $formModel->groupBys = $this->report->getGroupBys();
     $formModel->displayAttributes = $this->report->getDisplayAttributes();
     $formModel->drillDownDisplayAttributes = $this->report->getDrillDownDisplayAttributes();
     $formModel->chart = $this->report->getChart();
 }
 /**
  * @param RedBeanModelJoinTablesQueryAdapter $joinTablesAdapter
  * @return null|string
  */
 protected function makeFiltersContent(RedBeanModelJoinTablesQueryAdapter $joinTablesAdapter)
 {
     $filters = $this->report->getFilters();
     $filtersStructure = $this->report->getFiltersStructure();
     $resolvedFilters = $this->resolveFiltersForVariableStates($filters, $filtersStructure);
     $resolvedFilters = $this->resolveFiltersForReadPermissions($resolvedFilters, $filtersStructure);
     $builder = new FiltersReportQueryBuilder($joinTablesAdapter, $filtersStructure);
     return $builder->makeQueryContent($resolvedFilters);
 }
Ejemplo n.º 3
0
 public function testResolveGroupBysAsFilters()
 {
     $report = new Report();
     $report->setType(Report::TYPE_ROWS_AND_COLUMNS);
     $groupBy = new GroupByForReportForm('ReportsTestModule', 'ReportModelTestItem', $report->getType());
     $groupBy->attributeIndexOrDerivedType = 'lastName';
     $groupBy->axis = 'x';
     $report->addGroupBy($groupBy);
     $groupBy2 = new GroupByForReportForm('ReportsTestModule', 'ReportModelTestItem', $report->getType());
     $groupBy2->attributeIndexOrDerivedType = 'firstName';
     $groupBy2->axis = 'y';
     $report->addGroupBy($groupBy2);
     $this->assertNull($report->getFiltersStructure());
     $getData = array('groupByRowValuelastName' => '50', 'groupByRowValuefirstName' => '');
     $this->assertCount(0, $report->getFilters());
     $report->resolveGroupBysAsFilters($getData);
     $this->assertEquals('(1 AND 2)', $report->getFiltersStructure());
     $filters = $report->getFilters();
     $this->assertCount(2, $filters);
     $this->assertEquals('lastName', $filters[0]->getAttributeIndexOrDerivedType());
     $this->assertEquals('50', $filters[0]->value);
     $this->assertEquals(OperatorRules::TYPE_EQUALS, $filters[0]->operator);
     $this->assertEquals('firstName', $filters[1]->getAttributeIndexOrDerivedType());
     $this->assertEmpty($filters[1]->value);
     $this->assertEquals(OperatorRules::TYPE_EQUALS, $filters[1]->operator);
     $report = new Report();
     $report->setType(Report::TYPE_ROWS_AND_COLUMNS);
     $groupBy = new GroupByForReportForm('ReportsTestModule', 'ReportModelTestItem', $report->getType());
     $groupBy->attributeIndexOrDerivedType = 'lastName';
     $groupBy->axis = 'x';
     $report->addGroupBy($groupBy);
     $groupBy2 = new GroupByForReportForm('ReportsTestModule', 'ReportModelTestItem', $report->getType());
     $groupBy2->attributeIndexOrDerivedType = 'firstName';
     $groupBy2->axis = 'y';
     $report->addGroupBy($groupBy2);
     $this->assertNull($report->getFiltersStructure());
     $getData = array('groupByRowValuelastName' => '50');
     $this->assertCount(0, $report->getFilters());
     $report->resolveGroupBysAsFilters($getData);
     $this->assertEquals('(1 AND 2)', $report->getFiltersStructure());
     $filters = $report->getFilters();
     $this->assertCount(2, $filters);
     $this->assertEquals('lastName', $filters[0]->getAttributeIndexOrDerivedType());
     $this->assertEquals('50', $filters[0]->value);
     $this->assertEquals(OperatorRules::TYPE_EQUALS, $filters[0]->operator);
     $this->assertEquals('firstName', $filters[1]->getAttributeIndexOrDerivedType());
     $this->assertNull($filters[1]->value);
     $this->assertEquals(OperatorRules::TYPE_IS_NULL, $filters[1]->operator);
 }
 /**
  * @param Report $report
  * @param SavedReport$savedReport
  */
 public static function resolveReportToSavedReport(Report $report, SavedReport $savedReport)
 {
     $savedReport->description = $report->getDescription();
     $savedReport->moduleClassName = $report->getModuleClassName();
     $savedReport->name = $report->getName();
     $savedReport->owner = $report->getOwner();
     $savedReport->type = $report->getType();
     $data = array();
     $data['filtersStructure'] = $report->getFiltersStructure();
     $data['currencyConversionType'] = $report->getCurrencyConversionType();
     $data['spotConversionCurrencyCode'] = $report->getSpotConversionCurrencyCode();
     $data[ComponentForReportForm::TYPE_FILTERS] = self::makeArrayFromComponentFormsAttributesData($report->getFilters());
     $data[ComponentForReportForm::TYPE_ORDER_BYS] = self::makeArrayFromComponentFormsAttributesData($report->getOrderBys());
     $data[ComponentForReportForm::TYPE_GROUP_BYS] = self::makeArrayFromComponentFormsAttributesData($report->getGroupBys());
     $data[ComponentForReportForm::TYPE_DISPLAY_ATTRIBUTES] = self::makeArrayFromComponentFormsAttributesData($report->getDisplayAttributes());
     $data[ComponentForReportForm::TYPE_DRILL_DOWN_DISPLAY_ATTRIBUTES] = self::makeArrayFromComponentFormsAttributesData($report->getDrillDownDisplayAttributes());
     if ($report->getChart()->type != null) {
         $data['chart'] = self::makeArrayFromChartForReportFormAttributesData($report->getChart());
     }
     $savedReport->serializedData = serialize($data);
 }
Ejemplo n.º 5
0
 /**
  * Save calendar with serialized data.
  * @param Report $report
  * @param SavedCalendar $savedCalendar
  * @param array $wizardFormPostData
  * @throws FailedToSaveModelException
  */
 public static function saveCalendarWithSerializedData(Report $report, SavedCalendar $savedCalendar, $wizardFormPostData)
 {
     $filtersData = ArrayUtil::getArrayValue($wizardFormPostData, ComponentForReportForm::TYPE_FILTERS);
     if ($filtersData != null) {
         $sanitizedFiltersData = DataToReportUtil::sanitizeFiltersData($report->getModuleClassName(), $report->getType(), $filtersData);
         $unserializedData = array(ComponentForReportForm::TYPE_FILTERS => $sanitizedFiltersData, 'filtersStructure' => $report->getFiltersStructure());
         $savedCalendar->serializedData = serialize($unserializedData);
     }
     if (!$savedCalendar->save()) {
         throw new FailedToSaveModelException();
     }
 }