예제 #1
0
 /**
  * @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();
 }