/**
  * Update relations between Identity entity and Address entity 
  * 
  * @param IdentityInterface $model
  */
 protected function updateIdentityAddressRelations($model)
 {
     // Detect doublons
     $addresses = array();
     $form_identity_addresses = $model->getAddresses();
     foreach ($form_identity_addresses as $identity_address) {
         if (!isset($addresses[$identity_address->getAddress()->getId()])) {
             $addresses[$identity_address->getAddress()->getId()] = 1;
         } else {
             $model->removeAddress($identity_address);
         }
     }
     // Detect relations removed
     $relations = $this->container->get('asf_contact.identity_address.manager')->getRepository()->findBy(array('identity' => $model->getId()));
     foreach ($relations as $relation) {
         $found = false;
         foreach ($model->getAddresses() as $identity_address) {
             if ($relation->getAddress()->getId() == $identity_address->getAddress()->getId()) {
                 $found = true;
             }
         }
         if (false === $found) {
             $this->container->get('asf_contact.identity.manager')->getEntityManager()->remove($relation);
         }
     }
     // Detect new relations
     foreach ($model->getAddresses() as $identity_address) {
         $found = false;
         foreach ($relations as $relation) {
             if ($relation->getAddress()->getId() == $identity_address->getAddress()->getId()) {
                 $found = true;
             }
         }
         if (false === $found) {
             $identity_address->setIdentity($model);
             $this->container->get('asf_contact.identity.manager')->getEntityManager()->persist($identity_address);
         }
     }
 }