/**
  * Create and save new client account owner
  *
  * @param ClientAccount $account
  * @param $ownerType
  * @return ClientAccountOwner
  */
 private function createAccountOwnerByType(ClientAccount $account, $ownerType)
 {
     $owner = new ClientAccountOwner();
     $owner->setOwnerType($ownerType);
     $owner->setAccount($account);
     switch ($ownerType) {
         case ClientAccountOwner::OWNER_TYPE_SELF:
             $owner->setClient($account->getClient());
             break;
         case ClientAccountOwner::OWNER_TYPE_SPOUSE:
             $owner->setContact($account->getClient()->getSpouse());
             break;
         case ClientAccountOwner::OWNER_TYPE_OTHER:
             $contactData = $this->getOtherContact();
             $existContact = $this->em->getRepository('WealthbotClientBundle:ClientAdditionalContact')->findOneBy(array('client_id' => $account->getClientId(), 'first_name' => $contactData->getFirstName(), 'middle_name' => $contactData->getMiddleName(), 'last_name' => $contactData->getLastName(), 'relationship' => $contactData->getRelationship(), 'type' => ClientAccountOwner::OWNER_TYPE_OTHER));
             if ($contactData->getId() && !$existContact) {
                 $contact = new ClientAdditionalContact();
                 $contact->setFirstName($contactData->getFirstName());
                 $contact->setMiddleName($contactData->getMiddleName());
                 $contact->setLastName($contactData->getLastName());
                 $contact->setRelationship($contactData->getRelationship());
                 $contact->setType(ClientAccountOwner::OWNER_TYPE_OTHER);
             } elseif (!$contactData->getId() && $existContact) {
                 $contact = $existContact;
             } else {
                 $contact = $contactData;
             }
             $contact->setClient($account->getClient());
             $owner->setContact($contact);
             $this->em->persist($contact);
             $this->em->persist($owner);
             break;
     }
     $account->addAccountOwner($owner);
     $this->em->persist($owner);
     $this->em->flush();
     return $owner;
 }