/**
  * Given a partial name search for all contacts regardless of contact state unless the current user has security
  * restrictions on some states.  If the adapter resolver returns false, then the
  * user does not have access to the Leads or Contacts module.
  * JSON encode the resulting array of contacts.
  */
 public function actionAutoCompleteAllContacts($term)
 {
     $pageSize = Yii::app()->pagination->resolveActiveForCurrentUserByType('autoCompleteListPageSize', get_class($this->getModule()));
     $adapterName = ContactsUtil::resolveContactStateAdapterByModulesUserHasAccessTo('LeadsModule', 'ContactsModule', Yii::app()->user->userModel);
     if ($adapterName === false) {
         $messageView = new AccessFailureView();
         $view = new AccessFailurePageView($messageView);
         echo $view->render();
         Yii::app()->end(0, false);
     }
     $autoCompleteResults = ContactAutoCompleteUtil::getByPartialName($term, $pageSize, $adapterName);
     echo CJSON::encode($autoCompleteResults);
 }
 /**
  * Override to always add contact state filter on search results.
  */
 public function actionAutoComplete($term, $autoCompleteOptions = null)
 {
     $pageSize = Yii::app()->pagination->resolveActiveForCurrentUserByType('autoCompleteListPageSize', get_class($this->getModule()));
     $autoCompleteResults = ContactAutoCompleteUtil::getByPartialName($term, $pageSize, 'ContactsStateMetadataAdapter', $autoCompleteOptions);
     echo CJSON::encode($autoCompleteResults);
 }
 /**
  * @depends testGetCustomFieldDataByPartialName
  */
 public function testGetByPartialName()
 {
     Yii::app()->user->userModel = User::getByUsername('super');
     $userData = array('Billy', 'Jimmy', 'Sunny', 'Jinny', 'Johnny', 'Appay');
     foreach ($userData as $firstName) {
         $user = UserTestHelper::createBasicUser($firstName);
     }
     $user = User::getByUsername('billy');
     $contactData = array('Sam', 'Sally', 'Sarah', 'Jason', 'James', 'Roger');
     $contactStates = ContactState::getAll();
     foreach ($contactData as $firstName) {
         $contact = new Contact();
         $contact->title->value = 'Mr.';
         $contact->firstName = $firstName;
         $contact->lastName = $firstName . 'son';
         $contact->owner = $user;
         $contact->state = $contactStates[count($contactStates) - 1];
         $this->assertTrue($contact->save());
     }
     $accountData = array('ABC Company', 'Rabbit Systems', 'Rabid Technology', 'Super Company', 'Legalland', 'Toycity');
     foreach ($accountData as $name) {
         $account = new Account();
         $account->name = $name;
         $account->owner = $user;
         $this->assertTrue($account->save());
     }
     $data = ModelAutoCompleteUtil::getByPartialName('User', 'j', 5);
     $compareData = array(array('id' => $data[0]['id'], 'value' => 'Jimmy Jimmyson', 'label' => 'Jimmy Jimmyson (jimmy)'), array('id' => $data[1]['id'], 'value' => 'Jinny Jinnyson', 'label' => 'Jinny Jinnyson (jinny)'), array('id' => $data[2]['id'], 'value' => 'Johnny Johnnyson', 'label' => 'Johnny Johnnyson (johnny)'));
     $this->assertEquals($compareData, $data);
     $data = ContactAutoCompleteUtil::getByPartialName('sa', 5);
     $compareData = array(array('id' => $data[0]['id'], 'value' => 'Sally Sallyson', 'label' => 'Sally Sallyson'), array('id' => $data[1]['id'], 'value' => 'Sam Samson', 'label' => 'Sam Samson'), array('id' => $data[2]['id'], 'value' => 'Sarah Sarahson', 'label' => 'Sarah Sarahson'));
     $this->assertEquals($compareData, $data);
     $data = ContactAutoCompleteUtil::getByPartialName('xa', 5);
     $compareData = array();
     $this->assertEquals($compareData, $data);
     $data = ContactAutoCompleteUtil::getByPartialName('s', 1);
     $compareData = array(array('id' => $data[0]['id'], 'value' => 'Sally Sallyson', 'label' => 'Sally Sallyson'));
     $this->assertEquals($compareData, $data);
     $data = ModelAutoCompleteUtil::getByPartialName('Account', 'rab', 5);
     $compareData = array(array('id' => $data[0]['id'], 'value' => 'Rabbit Systems', 'label' => 'Rabbit Systems'), array('id' => $data[1]['id'], 'value' => 'Rabid Technology', 'label' => 'Rabid Technology'));
     $this->assertEquals($compareData, $data);
 }