/** * */ 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)); }