/** * @param CEvent $event */ public function processFromContactSide(CEvent $event) { $model = $event->sender; if (isset($model->originalAttributeValues['account'])) { if ($model->originalAttributeValues['account'][1] > 0) { //lookup to see if there is a 'primary' affiliation for old acc/con pairing and unmark as primary $accountContactAffiliations = AccountContactAffiliation::getPrimaryByAccountIdAndContactId((int) $model->originalAttributeValues['account'][1], (int) $model->id); //shouldn't be more than one, but if there is unset all of them foreach ($accountContactAffiliations as $accountContactAffiliation) { $accountContactAffiliation->primary = false; $accountContactAffiliation->save(); } } //lookup and see if there is an affiliation for the new acc/con pairing if ($model->account->id > 0) { $accountContactAffiliations = AccountContactAffiliation::getByAccountAndContact($model->account, $model); //Shouldn't be more than one, but if there is, just mark the first primary. if (count($accountContactAffiliations) > 0) { //If so - mark primary. $accountContactAffiliations[0]->primary = true; $accountContactAffiliations[0]->save(); } else { //If not, create and mark primary. $accountContactAffiliation = new AccountContactAffiliation(); $accountContactAffiliation->primary = true; $accountContactAffiliation->contact = $model; $accountContactAffiliation->account = $model->account; if ($accountContactAffiliation->isAttributeRequired('role') && $accountContactAffiliation->role->value == null) { $accountContactAffiliation->role->value = $this->resolveRoleValue($accountContactAffiliation); } $accountContactAffiliation->save(); } } } }
public function testGetByAccountAndContact() { $account = AccountTestHelper::createAccountByNameForOwner('secondAccount', Yii::app()->user->userModel); $contact = ContactTestHelper::createContactByNameForOwner('secondContact', Yii::app()->user->userModel); $this->assertEquals(0, count(AccountContactAffiliation::getAll())); $accountContactAffiliation = new AccountContactAffiliation(); $accountContactAffiliation->account = $account; $accountContactAffiliation->contact = $contact; $this->assertTrue($accountContactAffiliation->save()); $accountContactAffiliations = AccountContactAffiliation::getByAccountAndContact($account, $contact); $this->assertEquals(1, count($accountContactAffiliation)); $this->assertTrue($accountContactAffiliation->isSame($accountContactAffiliations[0])); }