protected static function resolveModuleClassName($attribute, ReportResultsRowData $data)
 {
     if (get_class($data->getModel($attribute)) == 'Contact' && LeadsUtil::isStateALead($data->getModel($attribute)->state)) {
         return 'LeadsModule';
     } else {
         return $data->getModel($attribute)->getModuleClassName();
     }
 }
 public static function makeStringForLinkOrLinks($attribute, ReportResultsRowData $data, $shouldRenderMultipleLinks, $attributeString)
 {
     assert('is_string($attribute)');
     if (null == ($model = $data->getModel($attribute))) {
         return null;
     }
     $modelClassName = get_class($data->getModel($attribute));
     $moduleClassName = self::resolveModuleClassName($attribute, $data);
     if (!$shouldRenderMultipleLinks) {
         $url = static::makeUrl($model->id, $moduleClassName);
         return ZurmoHtml::link($attributeString, $url, array("target" => "new"));
     }
     return static::makeStringForMultipleLinks($attributeString, $modelClassName, $moduleClassName);
 }
 public static function resolveValue($attribute, ReportResultsRowData $data)
 {
     list($notUsed, $displayAttributeKey) = explode(ReportResultsRowData::ATTRIBUTE_NAME_PREFIX, $attribute);
     $displayAttributes = $data->getDisplayAttributes();
     $metadata = CalculatedDerivedAttributeMetadata::getByNameAndModelClassName($displayAttributes[$displayAttributeKey]->getResolvedAttribute(), $displayAttributes[$displayAttributeKey]->getResolvedAttributeModelClassName());
     return CalculatedNumberUtil::calculateByFormulaAndModelAndResolveFormat($metadata->getFormula(), $data->getModel($attribute));
 }
 /**
  * There was a bug with showing address->state on a contact rows and columns report. it was showing the
  * contact->state instead. this test passes after this bug was fixed
  */
 public function testDisplayingAOwnedModelAttributeThatIsAlsoDefinedAsAnAttributeOnTheOwningModel()
 {
     $contactStates = ContactState::getByName('Qualified');
     $contact = new Contact();
     $contact->owner = Yii::app()->user->userModel;
     $contact->title->value = 'Mr.';
     $contact->firstName = 'Super';
     $contact->lastName = 'Man';
     $contact->jobTitle = 'Superhero';
     $contact->description = 'Some Description';
     $contact->department = 'Red Tape';
     $contact->officePhone = '1234567890';
     $contact->mobilePhone = '0987654321';
     $contact->officeFax = '1222222222';
     $contact->state = $contactStates[0];
     $contact->primaryAddress->state = 'IL';
     $this->assertTrue($contact->save());
     $displayAttribute = new DisplayAttributeForReportForm('ContactsModule', 'Contact', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute->setModelAliasUsingTableAliasName('abc');
     $displayAttribute->attributeIndexOrDerivedType = 'primaryAddress___state';
     $this->assertEquals('col0', $displayAttribute->columnAliasName);
     $reportResultsRowData = new ReportResultsRowData(array($displayAttribute), 4);
     $reportResultsRowData->addModelAndAlias($contact, 'abc');
     $model = $reportResultsRowData->getModel('attribute0');
     $this->assertEquals('IL', $model->primaryAddress->state);
     $this->assertEquals('IL', $reportResultsRowData->attribute0);
 }
 public function testGetModel()
 {
     $reportModelTestItemX = new ReportModelTestItem();
     $reportModelTestItemX->firstName = 'xFirst';
     $reportModelTestItemX->lastName = 'xLast';
     $displayAttributeX = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttributeX->setModelAliasUsingTableAliasName('abc');
     $displayAttributeX->attributeIndexOrDerivedType = 'FullName';
     $reportModelTestItemY = new ReportModelTestItem();
     $reportModelTestItemY->firstName = 'yFirst';
     $reportModelTestItemY->lastName = 'yLast';
     $displayAttributeY = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttributeY->setModelAliasUsingTableAliasName('def');
     $displayAttributeY->attributeIndexOrDerivedType = 'FullName';
     $reportResultsRowData = new ReportResultsRowData(array($displayAttributeX, $displayAttributeY), 4);
     $reportResultsRowData->addModelAndAlias($reportModelTestItemX, 'abc');
     $reportResultsRowData->addModelAndAlias($reportModelTestItemY, 'def');
     $model1 = $reportResultsRowData->getModel('attribute0');
     $this->assertEquals('xFirst xLast', strval($model1));
     $model2 = $reportResultsRowData->getModel('attribute1');
     $this->assertEquals('yFirst yLast', strval($model2));
 }