/** * @depends testCreateStateValues */ public function testLeadsStateMetadataAdapter() { $this->assertEquals(6, count(ContactState::GetAll())); $metadata = ContactsModule::getMetadata(); $this->assertEquals(ContactsUtil::getStartingStateId(), $metadata['global']['startingStateId']); $metadata = array('clauses' => array(), 'structure' => ''); $adapter = new LeadsStateMetadataAdapter($metadata); $adaptedMetadata = $adapter->getAdaptedDataProviderMetadata(); $statesToInclude = LeadsUtil::getLeadStateDataFromStartingStateOnAndKeyedById(); $this->assertEquals(4, count($statesToInclude)); $compareMetadata['clauses'] = array(); $compareMetadata['structure'] = null; $index = 1; foreach ($statesToInclude as $stateId => $notUsed) { $compareMetadata['clauses'][$index] = array('attributeName' => 'state', 'operatorType' => 'equals', 'value' => $stateId); $index++; } $compareMetadata['structure'] = '(1 or 2 or 3 or 4)'; $this->assertEquals($compareMetadata, $adaptedMetadata); $metadata = array('clauses' => array(1 => array('attributeName' => 'name', 'operatorType' => 'equals', 'value' => 'Vomo'), 2 => array('attributeName' => 'billingAddress', 'relatedAttributeName' => 'city', 'operatorType' => 'startsWith', 'value' => 'Chicago')), 'structure' => '1 and 2'); $adapter = new LeadsStateMetadataAdapter($metadata); $adaptedMetadata = $adapter->getAdaptedDataProviderMetadata(); $compareMetadata = array('clauses' => array(1 => array('attributeName' => 'name', 'operatorType' => 'equals', 'value' => 'Vomo'), 2 => array('attributeName' => 'billingAddress', 'relatedAttributeName' => 'city', 'operatorType' => 'startsWith', 'value' => 'Chicago')), 'structure' => '(1 and 2) and (3 or 4 or 5 or 6)'); $index = 3; foreach ($statesToInclude as $stateId => $notUsed) { $compareMetadata['clauses'][$index] = array('attributeName' => 'state', 'operatorType' => 'equals', 'value' => $stateId); $index++; } $this->assertEquals($compareMetadata, $adaptedMetadata); }
public static function makeNewLeadsReport() { $leadStateIdsAndNames = LeadsUtil::getLeadStateDataFromStartingStateOnAndKeyedById(); $report = new Report(); $report->setDescription('A report showing new leads'); $report->setModuleClassName('ContactsModule'); $report->setName('New Leads Report'); $report->setType(Report::TYPE_ROWS_AND_COLUMNS); $report->setOwner(Yii::app()->user->userModel); $report->setFiltersStructure('1 AND 2'); $report->setCurrencyConversionType(Report::CURRENCY_CONVERSION_TYPE_BASE); $filter = new FilterForReportForm('ContactsModule', 'Contact', $report->getType()); $filter->attributeIndexOrDerivedType = 'createdDateTime'; $filter->valueType = MixedDateTypesSearchFormAttributeMappingRules::TYPE_LAST_7_DAYS; $filter->availableAtRunTime = true; $report->addFilter($filter); $filterValue = array(); foreach (array_keys($leadStateIdsAndNames) as $value) { $filterValue[] = (string) $value; } $filter = new FilterForReportForm('ContactsModule', 'Contact', $report->getType()); $filter->attributeIndexOrDerivedType = 'state'; $filter->value = $filterValue; $filter->operator = OperatorRules::TYPE_ONE_OF; $report->addFilter($filter); $displayAttribute = new DisplayAttributeForReportForm('ContactsModule', 'Contact', $report->getType()); $displayAttribute->attributeIndexOrDerivedType = 'FullName'; $report->addDisplayAttribute($displayAttribute); $displayAttribute = new DisplayAttributeForReportForm('ContactsModule', 'Contact', $report->getType()); $displayAttribute->attributeIndexOrDerivedType = 'source'; $report->addDisplayAttribute($displayAttribute); $displayAttribute = new DisplayAttributeForReportForm('ContactsModule', 'Contact', $report->getType()); $displayAttribute->attributeIndexOrDerivedType = 'officePhone'; $report->addDisplayAttribute($displayAttribute); $displayAttribute = new DisplayAttributeForReportForm('ContactsModule', 'Contact', $report->getType()); $displayAttribute->attributeIndexOrDerivedType = 'primaryEmail___emailAddress'; $report->addDisplayAttribute($displayAttribute); $savedReport = new SavedReport(); SavedReportToReportAdapter::resolveReportToSavedReport($report, $savedReport); //set explicit $saved = $savedReport->save(); assert('$saved'); $explicitReadWriteModelPermissions = ExplicitReadWriteModelPermissionsUtil::makeBySecurableItem($savedReport); $explicitReadWriteModelPermissions->addReadWritePermitable(Group::getByName(Group::EVERYONE_GROUP_NAME)); $success = ExplicitReadWriteModelPermissionsUtil::resolveExplicitReadWriteModelPermissions($savedReport, $explicitReadWriteModelPermissions); assert('$success'); $saved = $savedReport->save(); assert('$saved'); }
protected function resolveStates() { return LeadsUtil::getLeadStateDataFromStartingStateOnAndKeyedById(); }