/**
  * 
  * @param Registration $registration
  * @param type $statusType
  * @param DateTime $timestamp
  * @throws InvalidArgumentException
  */
 protected function updateRegistrationStatus(Registration $registration, $statusType, DateTime $timestamp = null)
 {
     if (!RecruitmentStatus::statusTypeExists($statusType)) {
         throw new InvalidArgumentException('Situação inválida');
     }
     if ($timestamp === null) {
         $timestamp = new DateTime('now');
     }
     $em = $this->getEntityManager();
     $recStatus = $em->getRepository('Recruitment\\Entity\\RecruitmentStatus')->findOneBy(array('statusType' => $statusType));
     if ($recStatus !== null) {
         /**
          * retira o status anterior isCurrent = false
          */
         if ($registration->getRegistrationId() !== null) {
             $registration->getCurrentRegistrationStatus()->setIsCurrent(false);
         }
         // cria um status
         $regStatus = new RegistrationStatus();
         // associa o tipo e a data
         $regStatus->setRecruitmentStatus($recStatus)->setTimestamp($timestamp);
         // associa o status à inscrição
         $registration->addRegistrationStatus($regStatus);
     }
 }