public function changeProfileValidate(FormEvent $event)
 {
     /** @var UserAccountOwnerAdapter $data */
     $data = $event->getData();
     $form = $event->getForm();
     if ($form->has('spouse') && $data->getMaritalStatus() === Profile::CLIENT_MARITAL_STATUS_MARRIED) {
         $spouseValidator = new ClientSpouseFormValidator($form->get('spouse'), $data->getSpouse());
         $spouseValidator->validate();
     }
     $phoneDigits = 10;
     $phoneNum = str_replace(array(' ', '-', '(', ')'), '', $data->getPhoneNumber());
     if ($form->has('phone_number') && !is_numeric($phoneNum)) {
         $form->get('phone_number')->addError(new FormError("Enter correct phone number."));
     } elseif ($form->has('phone_number') && strlen($phoneNum) != $phoneDigits) {
         $form->get('phone_number')->addError(new FormError("Phone number must be {$phoneDigits} digits."));
     }
     if ($form->has('email')) {
         if (!filter_var($data->getEmail(), FILTER_VALIDATE_EMAIL)) {
             $form->get('email')->addError(new FormError("Invalid email address."));
         }
         $exist = $this->em->getRepository('WealthbotUserBundle:User')->findOneBy(array('email' => $data->getEmail()));
         if ($exist && $exist->getId() != $data->getId()) {
             $form->get('email')->addError(new FormError("Email address already exist."));
         }
     }
 }
 public function validate(FormEvent $event)
 {
     /** @var \Wealthbot\UserBundle\Entity\Profile $data */
     $data = $event->getData();
     $form = $event->getForm();
     if ($form->has('first_name') && !$data->getFirstName()) {
         $form->get('first_name')->addError(new FormError('Required.'));
     }
     if ($form->has('last_name') && !$data->getLastName()) {
         $form->get('last_name')->addError(new FormError('Required.'));
     }
     if ($form->has('street') && !$data->getStreet()) {
         $form->get('street')->addError(new FormError('Required.'));
     }
     if ($form->has('city') && !$data->getCity()) {
         $form->get('city')->addError(new FormError('Required.'));
     }
     if ($form->has('state') && !$data->getState()) {
         $form->get('state')->addError(new FormError('Required.'));
     }
     if ($form->has('estimated_income_tax') && !$data->getEstimatedIncomeTax()) {
         $form->get('estimated_income_tax')->addError(new FormError('Required.'));
     }
     // Choices validation
     if ($form->has('marital_status') && !in_array($data->getMaritalStatus(), Profile::getMaritalStatusChoices())) {
         $form->get('marital_status')->addError(new FormError('Required.'));
     }
     if ($form->has('annual_income') && !in_array($data->getAnnualIncome(), Profile::getAnnualIncomeChoices())) {
         $form->get('annual_income')->addError(new FormError('Required.'));
     }
     if ($form->has('liquid_net_worth') && !in_array($data->getLiquidNetWorth(), array_keys(Profile::getLiquidNetWorthChoices()))) {
         $form->get('liquid_net_worth')->addError(new FormError('Required.'));
     }
     if ($form->has('employment_type') && !in_array($data->getEmploymentType(), array_keys(Profile::getEmploymentTypeChoices()))) {
         $form->get('employment_type')->addError(new FormError('Required.'));
     }
     if ($form->has('birth_date')) {
         $birthDateData = $form->get('birth_date')->getData();
         if ($birthDateData && $birthDateData instanceof \DateTime) {
             $year = (int) $birthDateData->format('Y');
             if ($year < 1900) {
                 $form->get('birth_date')->addError(new FormError('year must start with 19 or 20 e.g. 1980'));
             }
         } else {
             $form->get('birth_date')->addError(new FormError('date format must be MM-DD-YYYY'));
         }
     }
     if ($form->has('spouse') && $data->getMaritalStatus() === Profile::CLIENT_MARITAL_STATUS_MARRIED) {
         /** @var ClientAdditionalContact $spouse */
         $spouse = $form->get('spouse')->getData();
         $phoneNum = str_replace(array(' ', '-', '(', ')'), '', $data->getPhoneNumber());
         $spouseValidator = new ClientSpouseFormValidator($form->get('spouse'), $data->getUser()->getSpouse());
         $spouseValidator->validate();
         $spouse->setSpouseFirstName($data->getFirstName());
         $spouse->setSpouseMiddleName($data->getMiddleName());
         $spouse->setSpouseLastName($data->getLastName());
         $spouse->setSpouseBirthDate($data->getBirthDate());
         $spouse->setState($data->getState());
         $spouse->setCity($data->getCity());
         $spouse->setStreet($data->getStreet());
         $spouse->setZip($data->getZip());
         $spouse->setPhoneNumber($phoneNum);
         $spouse->setType(ClientAdditionalContact::TYPE_SPOUSE);
         $spouse->setMaritalStatus(Profile::CLIENT_MARITAL_STATUS_MARRIED);
     }
 }