public function testSetDefaultContact() { $account = new Account(); $this->assertNull($account->getDefaultContact()); $contact = new Contact(); $account->setDefaultContact($contact); $this->assertSame($contact, $account->getDefaultContact()); $this->assertCount(1, $contact->getDefaultInAccounts()); $this->assertSame($account, $contact->getDefaultInAccounts()->first()); $contact2 = new Contact(); $account->setDefaultContact($contact2); $this->assertCount(0, $contact->getDefaultInAccounts()); $this->assertCount(1, $contact2->getDefaultInAccounts()); $this->assertSame($contact2, $account->getDefaultContact()); $this->assertSame($account, $contact2->getDefaultInAccounts()->first()); }
/** * Gets a list of all phone numbers available for the given Account object * * @param Account $object * * @return array of [phone number, phone owner] */ public function getPhoneNumbers($object) { $defaultContact = $object->getDefaultContact(); $result = $defaultContact ? $this->rootProvider->getPhoneNumbers($defaultContact) : []; foreach ($object->getContacts() as $contact) { if ($contact !== $defaultContact) { $result = array_merge($result, $this->rootProvider->getPhoneNumbers($contact)); } } return $result; }
/** * @Route("/widget/account-contacts/{id}", name="orocrm_account_widget_contacts", requirements={"id"="\d+"}) * @AclAncestor("orocrm_contact_view") * @Template() */ public function accountContactsAction(Account $account) { $defaultContact = $account->getDefaultContact(); $contacts = $account->getContacts(); $contactsWithoutDefault = array(); if (empty($defaultContact)) { $contactsWithoutDefault = $contacts->toArray(); } else { /** @var Contact $contact */ foreach ($contacts as $contact) { if ($contact->getId() == $defaultContact->getId()) { continue; } $contactsWithoutDefault[] = $contact; } } /** * Compare contacts to sort them alphabetically * * @param Contact $firstContact * @param Contact $secondContact * @return int */ $compareFunction = function ($firstContact, $secondContact) { $first = $firstContact->getLastName() . $firstContact->getFirstName() . $firstContact->getMiddleName(); $second = $secondContact->getLastName() . $secondContact->getFirstName() . $secondContact->getMiddleName(); return strnatcasecmp($first, $second); }; usort($contactsWithoutDefault, $compareFunction); return array('entity' => $account, 'defaultContact' => $defaultContact, 'contactsWithoutDefault' => $contactsWithoutDefault); }