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