コード例 #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);
         }
     }
 }
コード例 #2
0
 /**
  * Faz as verificações para evitar violações de restrição unique nos endereços
  * 
  * @param Person $person
  * @return void
  */
 protected function adjustAddresses(Person $person)
 {
     $em = $this->getEntityManager();
     $addresses = $person->getAddresses();
     foreach ($addresses as $address) {
         $addr = $em->getRepository('Recruitment\\Entity\\Address')->findOneBy(array('addressState' => $address->getAddressState(), 'addressCity' => $address->getAddressCity(), 'addressNeighborhood' => $address->getAddressNeighborhood(), 'addressStreet' => $address->getAddressStreet(), 'addressNumber' => $address->getAddressNumber(), 'addressComplement' => $address->getAddressComplement()));
         $addressId = $address->getAddressId();
         if ($addressId === null) {
             // endereço existe mas não existe um id associado
             if ($addr !== null) {
                 $person->removeAddress($address);
                 $person->addAddress($addr);
             }
         } else {
             if ($addr !== null) {
                 // Endereço é atualizado para um endereço já cadastrado no banco de dados.
                 if ($addressId != $addr->getAddressId()) {
                     $person->addAddress($addr);
                 }
                 continue;
             } else {
                 // endereço é atualizado para um novo endereço não existente no banco de dados.
                 $nAddress = new Address();
                 $nAddress->setAddressPostalCode($address->getAddressPostalCode());
                 $nAddress->setAddressState($address->getAddressState());
                 $nAddress->setAddressCity($address->getAddressCity());
                 $nAddress->setAddressNeighborhood($address->getAddressNeighborhood());
                 $nAddress->setAddressStreet($address->getAddressStreet());
                 $nAddress->setAddressNumber($address->getAddressNumber());
                 $nAddress->setAddressComplement($address->getAddressComplement());
                 $person->addAddress($nAddress);
             }
             $person->removeAddress($address);
             $em->detach($address);
         }
     }
 }
コード例 #3
0
 /**
  * @param Person $person
  * @return Registration
  */
 public function setPerson(Person $person)
 {
     $person->addRegistration($this);
     $this->person = $person;
     return $this;
 }
コード例 #4
0
 /**
  * Busca pelo usuário da inscrição $id. Caso não exista cria um novo.
  * 
  * @param Person $person pessoa associada à inscrição
  * @return User
  */
 protected function getUserIfExistsCreateIfNotExists(Person $person)
 {
     $em = $this->getEntityManager();
     // se não possui usuário
     if ($person->getUser() === null) {
         $user = new User();
         $userName = $person->getPersonEmail();
         $userPassword = preg_replace('/[.,-]/', '', $person->getPersonCpf());
         $pass = UserService::encryptPassword($userPassword);
         $user->setUserName($userName)->setUserPassword($pass['password'])->setUserPasswordSalt($pass['password_salt'])->setUserActive(true);
         $person->setUser($user);
         $em->merge($person);
         return $user;
     }
     return $person->getUser();
 }