コード例 #1
0
 /**
  * Faz verificações para evitar violações de restrição unique nos parentes
  * @param Person $person
  */
 protected function adjustRelatives(Person $person)
 {
     $em = $this->getEntityManager();
     $relatives = $person->getRelatives();
     foreach ($relatives as $relative) {
         $relativeId = $relative->getRelativeId();
         // se o responsável já existe então verifica se é o mesmo ou é diferente
         if ($relativeId !== null) {
             $rel = $em->getRepository('Recruitment\\Entity\\Relative')->findOneBy(array('person' => $person, 'relative' => $relative->getRelative()));
             // responsável encontrado na banco de dados
             if ($rel !== null) {
                 // responsável é diferente
                 if ($relativeId != $rel->getRelativeId()) {
                     $person->addRelative($rel);
                     $person->removeRelative($relative);
                     $em->detach($relative);
                 }
                 continue;
             }
         }
         // dados do responsável que foi cadastrado
         $rperson = $relative->getRelative();
         // verifica se ele existe no banco de dados
         $pers = $em->getRepository('Recruitment\\Entity\\Person')->findOneBy(array('personCpf' => $rperson->getPersonCpf()));
         // se existe define o responsável
         if ($pers !== null) {
             $relative->setRelative($pers);
             $em->detach($rperson);
         }
     }
 }