/**
  *
  */
 public function loanAccountRegistrationAction(Request $request, $guid)
 {
     $securityContext = $this->container->get('security.context');
     $user = $securityContext->getToken()->getUser();
     $site = $this->get('sudoux.cms.site')->getSite();
     $em = $this->getDoctrine()->getEntityManager();
     $application = $em->getRepository('SudouxMortgageBundle:LoanApplication')->findOneBySiteAndGuid($site, $guid);
     if (!isset($application)) {
         throw $this->createNotFoundException($this::LOAN_NOT_FOUND_MESSAGE);
     }
     $showForm = true;
     $appUser = $application->getUser();
     if (isset($appUser)) {
         if ($appUser->hasRole('ROLE_MEMBER')) {
             // a user is already assigned
             $showForm = false;
         }
     }
     $user = new User();
     $user->setAlert(true);
     $user->setTimezone($site->getTimezone());
     // set the borrower info
     $user->setFirstName($application->getBorrower()->getFirstName());
     $user->setLastName($application->getBorrower()->getLastName());
     $user->setEmail($application->getBorrower()->getEmail());
     $user->setHomePhone($application->getBorrower()->getPhoneHome());
     $user->setCellPhone($application->getBorrower()->getPhoneMobile());
     $form = $this->createForm(new MemberType($site), $user);
     if ($request->getMethod() == 'POST') {
         $form->bindRequest($request);
         $this->container->get('validator');
         // make sure ssn for borrower and user match
         if (preg_replace("/[^0-9]/", "", $form['ssn']->getData()) != preg_replace("/[^0-9]/", "", $application->getBorrower()->getSsn())) {
             $form['ssn']->addError(new FormError('Your ssn does not match the borrower ssn that is on this loan.'));
         }
         if ($form->isValid()) {
             $em = $this->getDoctrine()->getEntityManager();
             $factory = $this->get('security.encoder_factory');
             $encoder = $factory->getEncoder($user);
             $password = $encoder->encodePassword($form['plain_password']->getData(), $user->getSalt());
             $user->setPassword($password);
             $user->setActive(true);
             $user->addSite($site);
             $memberRole = $em->getRepository('SudouxCmsUserBundle:Role')->findOneBy(array('role' => 'ROLE_MEMBER'));
             $user->addRole($memberRole);
             $em->persist($user);
             $application->setUser($user);
             $em->persist($application);
             $em->flush();
             $request->getSession()->getFlashBag()->add('success', 'Your account has been created. Please login to view your loan.');
             return $this->redirect($this->generateUrl('sudoux_mortgage_loan_member_detail', array('id' => $application->getId())));
         }
     }
     return $this->render('SudouxMortgageBundle:LoanApplicationFront:loanAccountRegistration.html.twig', array('loanApp' => $application, 'form' => $form->createView(), 'showForm' => $showForm));
 }