protected function removeLoanCreditReports(LoanApplication $loan) { $this->removeBorrowerCreditReport($loan->getBorrower()); $coBorrowers = $loan->getCoBorrower(); foreach ($coBorrowers as $borrower) { $this->removeBorrowerCreditReport($borrower); } }
protected function formatVantage(LoanApplication $application) { $site = $application->getSite(); $a = new \stdClass(); $coBorrowers = $application->getCoBorrower(); $borrower = $application->getBorrower(); $a->isCurrentlyEmployed = False; $a->coIsCurrentlyEmployed = False; $a->firstName = $borrower->getFirstName(); $a->lastName = $borrower->getLastName(); $a->address1 = $borrower->getLocation()->getLocation()->getAddress1(); $a->address2 = $borrower->getLocation()->getLocation()->getAddress2(); $a->city = $borrower->getLocation()->getLocation()->getCity(); $a->state = $borrower->getLocation()->getLocation()->getState()->getAbbreviation(); $a->zipcode = $borrower->getLocation()->getLocation()->getZipcode(); $a->email = $borrower->getEmail(); $a->phoneHome = $borrower->getPhoneHome(); $a->phoneCell = $borrower->getPhoneMobile(); $a->ssn = $borrower->getSsn(); $a->dependants = $borrower->getDependentsNumber(); $a->dependantsAges = $borrower->getDependentsAges(); $a->yearsOfResidence = $borrower->getLocation()->getYearsAtLocation(); $a->monthsOfResidence = $borrower->getLocation()->getMonthsAtLocation(); $a->isRenting = !$borrower->getLocation()->getOwnResidence(); $a->hasCoborrower = !$coBorrowers->isEmpty(); $a->yearsOfSchool = $borrower->getYearsOfSchool(); switch ($borrower->getMaritalStatus()) { case '0': $a->maritalStatus = 3; break; case '1': $a->maritalStatus = 1; break; case '2': $a->maritalStatus = 4; break; default: $a->maritalStatus = 0; } foreach ($borrower->getEmployment() as $job) { if ($job->getEndDate()->add(new \DateInterval('P1D')) >= $application->getCreated() && $application->getBorrower()->getEmployed()) { $a->isCurrentlyEmployed = True; $job->setCurrent(True); $a->employer = $job->getEmployerName(); $a->employerPhone = $job->getEmployerPhone(); $a->employerAddress1 = $job->getLocation()->getAddress1(); $a->employerAddress2 = $job->getLocation()->getAddress2(); $a->employerCity = $job->getLocation()->getCity(); $a->employerState = $job->getLocation()->getState()->getAbbreviation(); $a->employerZipCode = $job->getLocation()->getZipcode(); $a->employmentYearsOnJob = $job->getTimeAtJob()->years; $a->employmentMonthsOnJob = $job->getTimeAtJob()->months; $a->employmentTitle = $job->getTitle(); } else { $job->setCurrent(False); } } foreach ($coBorrowers as $coBorrower) { $a->coFirstName = $coBorrower->getFirstName(); $a->coLastName = $coBorrower->getLastName(); $a->coAddress1 = $coBorrower->getLocation()->getLocation()->getAddress1(); $a->coAddress2 = $coBorrower->getLocation()->getLocation()->getAddress2(); $a->coCity = $coBorrower->getLocation()->getLocation()->getCity(); $a->coState = $coBorrower->getLocation()->getLocation()->getstate()->getAbbreviation(); $a->coZip = $coBorrower->getLocation()->getLocation()->getZipcode(); $a->coPhoneHome = $coBorrower->getPhoneHome(); $a->coPhoneCell = $coBorrower->getPhoneMobile(); $a->coSSN = $coBorrower->getSsn(); $a->coEmail = $coBorrower->getEmail(); $a->coDependants = $coBorrower->getDependentsNumber(); $a->coDependantsAges = $coBorrower->getDependentsAges(); $a->coYearsOfResidence = $coBorrower->getLocation()->getYearsAtLocation(); $a->coMonthsOfResidence = $coBorrower->getLocation()->getMonthsAtLocation(); $a->coIsRenting = !$coBorrower->getLocation()->getOwnResidence(); foreach ($coBorrower->getEmployment() as $job) { if ($job->getEndDate()->add(new \DateInterval('P1D')) >= $application->getCreated() && $application->getBorrower()->getEmployed()) { $a->coIsCurrentlyEmployed = True; $job->setCurrent(True); $a->CoEmployer = $job->getEmployerName(); $a->CoEmployerPhone = $job->getEmployerPhone(); $a->CoEmployerAddress1 = $job->getLocation()->getAddress1(); $a->CoEmployerAddress2 = $job->getLocation()->getAddress2(); $a->CoEmployerCity = $job->getLocation()->getCity(); $a->CoEmployerState = $job->getLocation()->getState()->getAbbreviation(); $a->CoEmployerZipCode = $job->getLocation()->getZipcode(); $a->CoEmploymentYearsOnJob = $job->getTimeAtJob()->years; $a->CoEmploymentMonthsOnJob = $job->getTimeAtJob()->months; $a->CoEmploymentTitle = $job->getTitle(); } else { $job->setCurrent(False); } } switch ($coBorrower->getMaritalStatus()) { case '0': $a->coMaritalStatus = 3; break; case '1': $a->coMaritalStatus = 1; break; case '2': $a->coMaritalStatus = 4; break; default: $a->coMaritalStatus = 0; } } $a->loanAmount = $application->getLoanAmount(); $a->propertyMarketValue = $application->getSalePrice(); $a->propertyAddress1 = $application->getPropertyLocation()->getAddress1(); $a->propertyAddress2 = $application->getPropertyLocation()->getAddress2(); $a->propertyCity = $application->getPropertyLocation()->getCity(); $a->propertyState = $application->getPropertyLocation()->getState()->getAbbreviation(); $a->propertyZipCode = $application->getPropertyLocation()->getZipcode(); $a->realEstateBrokerPhone = $application->getRealtorPhone(); $a->propertyUse = $application->getResidencyType() + 1; $a->vendorLeadPrice = '$5.00'; $a->vendorLeadId = $application->getId(); $a->vendorId = $site->getSettings()->getLos()->getUsername(); $a->vendorPassword = $site->getSettings()->getLos()->getPassword(); $a->orgId = $site->getSettings()->getLos()->getLicenseKey(); $a->customerIp = $ip = getenv('HTTP_CLIENT_IP') ?: getenv('HTTP_X_FORWARDED_FOR') ?: getenv('HTTP_X_FORWARDED') ?: getenv('HTTP_FORWARDED_FOR') ?: getenv('HTTP_FORWARDED') ?: getenv('REMOTE_ADDR'); $a->vendorWebProperty = $site->getPrimaryDomain()->getDomain(); $a->vendorCampaign = $site->getSettings()->getLos()->getSettings(); return $a; }
/** * * @param LoanApplication $application */ public function addProspects(LoanApplication $application) { $response = null; try { $borrowers = array($application->getBorrower()); foreach ($application->getCoBorrower() as $coBorrower) { array_push($borrowers, $coBorrower); } // prepare borrowers $prospects = array(); foreach ($borrowers as $borrower) { $married = false; if ($borrower->getMaritalStatus() == 0) { $married = true; } $prospect = array('id' => $borrower->getId(), 'firstName' => $borrower->getFirstName(), 'lastName' => $borrower->getLastName(), 'email' => $borrower->getEmail(), 'primaryPhone' => $borrower->getPhoneHome(), 'suffix' => $borrower->getSuffix(), 'middleInitial' => $borrower->getMiddleInitial(), 'ssn' => $borrower->getSsn(), 'married' => $married, 'birthDate' => $borrower->getBirthDate()->format($this::SERVICE_DATE_FORMAT), 'homeAddress' => array('street1' => $borrower->getLocation()->getLocation()->getAddress1(), 'street2' => $borrower->getLocation()->getLocation()->getAddress2(), 'city' => $borrower->getLocation()->getLocation()->getCity(), 'state' => $borrower->getLocation()->getLocation()->getState()->getName(), 'stateAbbreviation' => $borrower->getLocation()->getLocation()->getState()->getAbbreviation(), 'zipcode' => $borrower->getLocation()->getLocation()->getZipcode())); array_push($prospects, $prospect); } $paramLoanOfficer = null; $loanOfficer = $application->getLoanOfficer(); if (isset($loanOfficer)) { $loanOfficerLosId = $loanOfficer->getLosId(); if (isset($loanOfficerLosId)) { $paramLoanOfficer['username'] = $loanOfficerLosId; } } $params = array('user' => $this->user, 'prospects' => $prospects, 'loanOfficer' => $paramLoanOfficer); $response = $this->request('createProspect', $params); // update the los ids if ($response['result']['success']) { foreach ($response['result']['prospects'] as $p) { $borrower = $this->em->getRepository('SudouxMortgageBundle:Borrower')->find($p['id']); $borrower->setLosId($p['losID']); $this->em->persist($borrower); } $this->em->flush(); } } catch (\Exception $e) { $this->logger->crit($e->getMessage()); } return $response; }
protected function formatMismo231(LoanApplication $application) { $borrower = $application->getBorrower(); $maritalStatusBorrower = $borrower->getMaritalStatus(); $coBorrowers = $application->getCoBorrower(); $type = $application->getLoanType(); $propertyType = $application->getPropertyType(); $resType = $application->getResidencyType(); switch ($propertyType) { case '1': $application->setPropertyType("twotofourunitproperty"); break; case '2': $application->setPropertyType("condominium"); break; case '3': $application->setPropertyType("twotofourunitproperty"); break; case '4': $application->setPropertyType("twotofourunitproperty"); break; case '5': $application->setPropertyType("condominium"); break; case '7': $application->setPropertyType("condominium"); break; default: $application->setPropertyType("singlefamilyresidence"); } if ($type == 0) { $application->setLoanType("Purchase"); } else { if ($application->getRefinancePurpose() == 3) { $application->setLoanType("Refinance"); } else { $application->setLoanType("Refinance"); } } $appTitleManner = $application->getTitleManner(); switch ($appTitleManner) { case 'Community property': $application->setTitleManner("Community Property"); break; case 'Joint Tenants': $application->setTitleManner("Joint Tenancy"); break; case 'Single Man': $application->setTitleManner("Single"); break; case 'Single Woman': $application->setTitleManner("Single"); break; case 'Married Man': $application->setTitleManner("A Married Man As His Separate Estate"); break; case 'Married Woman': $application->setTitleManner("A Married Woman As Her Separate Estate"); break; case 'Tenants in common': $application->setTitleManner("Tenancy in Common"); break; case 'To be decided in escrow': $application->setTitleManner(""); break; case 'Unmarried man': $application->setTitleManner("An Unmarried Person"); break; case 'Unmarried woman': $application->setTitleManner("An Unmarried Person"); break; case 'Other': $application->setTitleManner(""); break; default: $application->setTitleManner(""); } $refiPurpose = $application->getRefinancePurpose(); switch ($refiPurpose) { case '0': $application->setRefinancePurpose("cashoutdebtconsolidation"); break; case '1': $application->setRefinancePurpose("cashouthomeimprovement"); break; case '2': $application->setRefinancePurpose("cashoutother"); break; case '3': $application->setRefinancePurpose("nocashoutother"); break; case '4': $application->setRefinancePurpose("cashoutlimited"); break; default: $application->setRefinancePurpose("cashoutdebtconsolidation"); } switch ($resType) { case '0': $application->setResidencyType("PrimaryResidence"); break; case '1': $application->setResidencyType("SecondHome"); break; case '2': $application->setResidencyType("Investor"); break; default: $application->setResidencyType("PrimaryResidence"); } if ($borrower->getDeclarationUsCitizen()) { $borrower->setDeclarationUsCitizen("USCitizen"); } elseif ($borrower->getDeclarationResidentAlien()) { $borrower->setDeclarationUsCitizen("PermanentResidentAlien"); } else { $borrower->setDeclarationUsCitizen("Unknown"); } if ($borrower->getDeclarationOwnershipWithinThreeYears()) { switch ($borrower->getDeclarationOwnershipWithinThreeYearsPropertyTitle()) { case '0': $borrower->setDeclarationOwnershipWithinThreeYearsPropertyTitle("Sole"); break; case '1': $borrower->setDeclarationOwnershipWithinThreeYearsPropertyTitle("JointWithSpouse"); break; case '2': $borrower->setDeclarationOwnershipWithinThreeYearsPropertyTitle("JointWithOtherThanSpouse"); break; default: } switch ($borrower->getDeclarationOwnershipWithinThreeYearsPropertyType()) { case '0': $borrower->setDeclarationOwnershipWithinThreeYearsPropertyType("PrimaryResidence"); break; case '1': $borrower->setDeclarationOwnershipWithinThreeYearsPropertyType("SecondaryResidence"); break; case '2': $borrower->setDeclarationOwnershipWithinThreeYearsPropertyType("Investment"); break; default: } } if (!$borrower->getGovtMonitoringOptOut()) { switch ($borrower->getEthnicity()) { case '0': $borrower->setEthnicity('HispanicOrLatino'); break; case '1': $borrower->setEthnicity('NotHispanicOrLatino'); break; case '2': $borrower->setEthnicity('NotApplicable'); break; default: } switch ($borrower->getRace()) { case '0': $borrower->setRace('AmericanIndianOrAlaskanNative'); break; case '1': $borrower->setRace('AsianOrPacificIslander'); break; case '2': $borrower->setRace('BlackNotOfHispanicOrigin'); break; case '3': $borrower->setRace('AsianOrPacificIslander'); break; case '4': $borrower->setRace('WhiteNotOfHispanicOrigin'); break; default: $borrower->setRace('Other'); } if ($borrower->getIsMale()) { $borrower->setIsMale("Male"); } else { $borrower->setIsMale("Female"); } } $borrowerAssetsA = $borrower->getAssetAccount(); foreach ($borrowerAssetsA as $a) { $aType = $a->getType(); switch ($aType) { case '0': $a->setType('CheckingAccount'); break; case '1': $a->setType('SavingsAccount'); break; case '2': $a->setType('MoneyMarketFund'); break; case '3': $a->setType('CertificateOfDepositTimeDeposit'); break; case '4': $a->setType('MutualFund'); break; case '5': $a->setType('RetirementFund'); break; default: $a->setType('OtherLiquidAssets'); } } switch ($maritalStatusBorrower) { case '0': $borrower->setMaritalStatus('Married'); break; case '1': $borrower->setMaritalStatus('Unmarried'); break; case '2': $borrower->setMaritalStatus('Separated'); break; default: } if ($borrower->getDependents()) { $BorrowerDependentsAges = explode(",", $application->getBorrower()->getDependentsAges()); $application->getBorrower()->setDependentsAges($BorrowerDependentsAges); } $borrowerEmployment = $borrower->getEmployment()->getValues(); foreach ($borrowerEmployment as $job) { $borEmpPhone = null; if ($job->getEndDate()->add(new \DateInterval('P1D')) >= $application->getCreated() && $application->getBorrower()->getEmployed()) { $job->setCurrent("Y"); } else { $job->setCurrent("N"); } switch ($job->getSelfEmployed()) { case '0': $job->setSelfEmployed("N"); break; case '1': $job->setSelfEmployed("Y"); break; default: } $borEmpPhone = $job->getEmployerPhone(); if (isset($borEmpPhone)) { $borEmpPhone = preg_replace("/[^0-9]/", "", $borEmpPhone); $job->setEmployerPhone($borEmpPhone); } } //////////////////////////////////////////////////////////////////////////// // // Co Borrowers // //////////////////////////////////////////////////////////////////// foreach ($coBorrowers as $coBorrower) { $maritalStatusCoBorrower = $coBorrower->getMaritalStatus(); $coBorrowerDependentsAges = NULL; if ($coBorrower->getDeclarationUsCitizen()) { $coBorrower->setDeclarationUsCitizen("USCitizen"); } elseif ($coBorrower->getDeclarationResidentAlien()) { $coBorrower->setDeclarationUsCitizen("PermanentResidentAlien"); } else { $coBorrower->setDeclarationUsCitizen("Unknown"); } if ($coBorrower->getDeclarationOwnershipWithinThreeYears()) { switch ($coBorrower->getDeclarationOwnershipWithinThreeYearsPropertyTitle()) { case '0': $coBorrower->setDeclarationOwnershipWithinThreeYearsPropertyTitle("Sole"); break; case '1': $coBorrower->setDeclarationOwnershipWithinThreeYearsPropertyTitle("JointWithSpouse"); break; case '2': $coBorrower->setDeclarationOwnershipWithinThreeYearsPropertyTitle("JointWithOtherThanSpouse"); break; default: } switch ($coBorrower->getDeclarationOwnershipWithinThreeYearsPropertyType()) { case '0': $coBorrower->setDeclarationOwnershipWithinThreeYearsPropertyType("PrimaryResidence"); break; case '1': $coBorrower->setDeclarationOwnershipWithinThreeYearsPropertyType("SecondaryResidence"); break; case '2': $coBorrower->setDeclarationOwnershipWithinThreeYearsPropertyType("Investment"); break; default: } } if (!$coBorrower->getGovtMonitoringOptOut()) { switch ($coBorrower->getEthnicity()) { case '0': $coBorrower->setEthnicity('HispanicOrLatino'); break; case '1': $coBorrower->setEthnicity('NotHispanicOrLatino'); break; case '2': $coBorrower->setEthnicity('NotApplicable'); break; default: } switch ($coBorrower->getRace()) { case '0': $coBorrower->setRace('AmericanIndianOrAlaskanNative'); break; case '1': $coBorrower->setRace('AsianOrPacificIslander'); break; case '2': $coBorrower->setRace('BlackNotOfHispanicOrigin'); break; case '3': $coBorrower->setRace('AsianOrPacificIslander'); break; case '4': $coBorrower->setRace('WhiteNotOfHispanicOrigin'); break; default: $coBorrower->setRace('Other'); } if ($coBorrower->getIsMale()) { $coBorrower->setIsMale("Male"); } else { $coBorrower->setIsMale("Female"); } } switch ($maritalStatusCoBorrower) { case '0': $coBorrower->setMaritalStatus('Married'); break; case '1': $coBorrower->setMaritalStatus('Unmarried'); break; case '2': $coBorrower->setMaritalStatus('Separated'); break; default: } if ($coBorrower->getDependents()) { $coBorrowerDependentsAges = explode(",", $coBorrower->getDependentsAges()); $coBorrower->setDependentsAges($coBorrowerDependentsAges); } $coBorrowerEmployment = $coBorrower->getEmployment()->getValues(); foreach ($coBorrowerEmployment as $job) { $coBorEmpPhone = null; if ($job->getEndDate()->add(new \DateInterval('P1D')) >= $application->getCreated() && $application->getBorrower()->getEmployed()) { $job->setCurrent("Y"); } else { $job->setCurrent("N"); } switch ($job->getSelfEmployed()) { case '0': $job->setSelfEmployed("N"); break; case '1': $job->setSelfEmployed("Y"); break; default: } $coBorEmpPhone = $job->getEmployerPhone(); if (isset($coBorEmpPhone)) { $borEmpPhone = preg_replace("/[^0-9]/", "", $coBorEmpPhone); $job->setEmployerPhone($borEmpPhone); } } $coBborrowerAssetsA = $coBorrower->getAssetAccount(); foreach ($coBborrowerAssetsA as $a) { $aType = $a->getType(); switch ($aType) { case '0': $a->setType('CheckingAccount'); break; case '1': $a->setType('SavingsAccount'); break; case '2': $a->setType('MoneyMarketFund'); break; case '3': $a->setType('CertificateOfDepositTimeDeposit'); break; case '4': $a->setType('MutualFund'); break; case '5': $a->setType('RetirementFund'); break; default: $a->setType('OtherLiquidAssets'); } } } return $application; }
/** * @param Request $request * @param null $id * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response * @throws \Exception */ public function applyStep1Action(Request $request, $id = null) { $securityContext = $this->container->get('security.context'); if (!$securityContext->isGranted('IS_AUTHENTICATED_REMEMBERED')) { $session = $request->getSession(); $session->getFlashBag()->add('error', $this::NOT_REGISTERED_MESSAGE); return $this->redirect($this->generateUrl('sudoux_cms_member_register')); } $siteRequest = $this->get('sudoux.cms.site'); $site = $siteRequest->getSite(); $em = $this->getDoctrine()->getEntityManager(); $user = $securityContext->getToken()->getUser(); $newApplication = true; if (isset($id)) { $application = $em->getRepository('SudouxMortgageBundle:LoanApplication')->findOneBy(array('id' => $id, 'user' => $user)); if (!isset($application)) { throw $this->createNotFoundException($this::LOAN_NOT_FOUND_MESSAGE); } if ($application->getLockStatus() > 0) { $session = $request->getSession(); $session->getFlashBag()->add('error', $this::LOAN_LOCKED_MESSAGE); return $this->redirect($this->generateUrl('sudoux_mortgage_loan_member_detail', array('id' => $id))); } $newApplication = false; } else { $application = new LoanApplication(); $siteLoanOfficer = $site->getSettings()->getLoanOfficer(); if (isset($siteLoanOfficer)) { $application->setLoanOfficer($siteLoanOfficer); } } if ($securityContext->isGranted('IS_AUTHENTICATED_REMEMBERED')) { // autofill user info $application->getBorrower()->setEmail($user->getEmail()); } $showReferralSources = false; $referralSourceCount = $em->getRepository('SudouxCmsFormBundle:ReferralSource')->findAllActiveBySiteCount($site); if ($referralSourceCount > 0) { $showReferralSources = true; } $form = $this->createForm(new LoanApplicationType($site, $application), $application, array('validation_groups' => array('step1'))); if ($request->getMethod() == 'POST') { $form->bindRequest($request); $this->validateChildEntity($application, $form, 'borrower'); if ($form->isValid()) { try { $application->setSite($site); $application->setUser($user); if ($newApplication) { $application->setLastStepCompleted(1); $em->persist($application); $em->flush(); // set the defaults because the constructor is not called on prototype forms $coBorrowers = $application->getCoBorrower(); if (count($coBorrowers) > 0) { foreach ($coBorrowers as $coBorrower) { $coBorrower->setDefaults(); } } $email = new Email(); $email->setSubject('A borrower has started a loan application'); $message = sprintf("A borrower has started a loan application. <a href=\"%s\">Click here</a> to view the application.", $this->generateUrl('sudoux_mortgage_admin_loan_step1', array('id' => $application->getId()), true)); $message .= sprintf('<p>Borrower: %s<br>', $application->getBorrower()->getFullName()); $message .= sprintf('Email: %s<br>', $application->getBorrower()->getEmail()); $message .= sprintf('Phone: %s</p>', $application->getBorrower()->getPhoneHome()); if ($application->getCoBorrower()->count() > 0) { $coBorrower = $application->getCoBorrower()->get(0); $message .= sprintf('<p>Co-Borrower: %s</p>', $coBorrower->getFullName()); $message .= sprintf('Email: %s<br>', $coBorrower->getEmail()); $message .= sprintf('Phone: %s</p>', $coBorrower->getPhoneHome()); } $email->setMessage($message); $email->setSite($site); // notify the site admin or lo $loanOfficer = $application->getLoanOfficer(); if (isset($loanOfficer)) { $notificationEmail = $loanOfficer->getEmail(); $email->setRecipientName($loanOfficer->getFullName()); } else { $notificationEmail = $site->getSettings()->getInheritedWebsiteEmail(); $email->setRecipientName('Site Administrator'); } $email->setRecipient($notificationEmail); $email->setBcc($site->getSettings()->getInheritedWebsiteEmailBcc()); $emailUtil = $this->get('sudoux.cms.message.email_util'); $emailUtil->logAndSend($email); } else { $em->persist($application); $em->flush(); } return $this->redirect($this->generateUrl('sudoux_mortgage_loan_apply_step2', array('id' => $application->getId()))); } catch (\Exception $e) { $logger = $this->get('logger'); $logger->crit($e->getMessage()); throw $e; } } } return $this->render('SudouxMortgageBundle:LoanApplicationFront:applyStep1.html.twig', array('form' => $form->createView(), 'application' => $application, 'showReferralSources' => $showReferralSources)); }
/** * @param $dataIn * @param \Sudoux\MortgageBundle\Entity\LoanApplication $application * @param int $source * @return \Sudoux\MortgageBundle\Entity\LoanApplication * @author Eric Haynes */ public function convertToLoanApp($dataIn, LoanApplication $application = null, $source = 4) { $xml = simplexml_load_string($dataIn); $json = json_encode($xml); $destinyData = json_decode($json, TRUE); if (!isset($application)) { $application = new LoanApplication(); $application->setLastStepCompleted(6); $application->setHasRealtor(false); //add section to grab realtor info if in xml $application->setNumUnits(1); $application->setSource($source); $housingExpense = new ExpenseHousing(); $application->setExpenseHousing($housingExpense); } $application->setStatus(6); // loan-info // //////////////////////////////// $loanAmount = $destinyData['loan-info']['@attributes']['base-loan-amount']; $application->setLoanAmount($this->toFloat($loanAmount)); $loanTerm = $destinyData['loan-info']['@attributes']['loan-term']; $application->setLoanTerm($this->getLoanTermInYears($loanTerm)); $loanType = $destinyData['loan-info']['@attributes']['loan-purpose']; $newLoanType = $this->getLoanTypeDestiny($loanType); $application->setLoanType($newLoanType); if ($newLoanType == 1) { $refiPurpose = $destinyData['loan-info']['@attributes']['purpose-of-refinance']; $application->setRefinancePurpose($this->getLoanRefiPurposeDestiny($refiPurpose)); $refiFirstMortgageAmount = $destinyData['loan-info']['@attributes']['first-mortgage-amount']; $application->setRefinanceOriginalCost($refiFirstMortgageAmount); $refiFirstMortgageRate = $destinyData['loan-info']['@attributes']['interest-rate']; $application->setRefinanceCurrentRate($refiFirstMortgageRate); $loanProgram = $destinyData['loan-info']['@attributes']['loan-program']; $application->setRefinanceCurrentLoanType($loanProgram); } $residencyType = $destinyData['loan-info']['@attributes']['occupancy-type']; $application->setResidencyType($this->getResidencyTypeDestiny($residencyType)); $salePrice = $destinyData['loan-info']['@attributes']['sale-price']; $application->setSalePrice($this->toFloat($salePrice)); // property-info // ///////////////////////////////// $propertyLocation = $application->getPropertyLocation(); $propertyAddress = ucwords(strtolower($destinyData['property-info']['@attributes']['street-address'])); $propertyLocation->setAddress1($propertyAddress); $propertyCity = ucwords(strtolower($destinyData['property-info']['@attributes']['city'])); $propertyLocation->setCity($propertyCity); //echo $propertyCity; exit; $propertyState = $destinyData['property-info']['@attributes']['state']; $propertyStateEntity = $this->em->getRepository('SudouxCmsLocationBundle:State')->findStateByAbbreviation($propertyState); $propertyLocation->setState($propertyStateEntity); $propertyZipcode = $destinyData['property-info']['@attributes']['zip']; $propertyLocation->setZipcode($this->toZipcode($propertyZipcode)); $propertyType = $destinyData['property-info']['@attributes']['property-type-code']; $application->setPropertyType($this->getPropertyTypeDestiny($propertyType)); // borrower info // //////////////////////////////// $marriageStatus = $this->guessMarriedTypeDestiny($destinyData['borrower-info']); foreach ($destinyData['borrower-info'] as $destinyBorrower) { if ($destinyBorrower['@attributes']['co-borrower'] == 'false') { $borrower = $application->getBorrower(); $this->convertDestinyToBorrower($application, $borrower, $destinyBorrower, false); $borrower->setMaritalStatus($marriageStatus); } else { $coBorrowers = $application->getCoBorrower(); $coBorrowerSsn = $destinyBorrower['@attributes']['ssn']; $coBorrower = null; if (count($coBorrowers) > 0) { // check if coborrower exists foreach ($coBorrowers as $cb) { $existingSsn = preg_replace("/[^0-9]/", "", $cb->getSsn()); if ($existingSsn == $coBorrowerSsn) { $coBorrower = $cb; break; } } } if (!isset($coBorrower)) { $coBorrower = new Borrower(); $application->addCoBorrower($coBorrower); $coBorrower->setSsn($coBorrowerSsn); } $this->convertDestinyToBorrower($application, $coBorrower, $destinyBorrower, true); $coBorrower->setMaritalStatus($marriageStatus); } } // loan status // //////////////////////////////// return $application; }
/** * @param Request $request * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response * @throws \Exception */ public function prequalifyAction(Request $request) { $securityContext = $this->container->get('security.context'); $user = $securityContext->getToken()->getUser(); $siteRequest = $this->get('sudoux.cms.site'); $site = $siteRequest->getSite(); $em = $this->getDoctrine()->getEntityManager(); $officers = $em->getRepository('SudouxMortgageBundle:LoanOfficer')->findBy(array('site' => $site, 'active' => true)); $application = new LoanApplication(); $application->setIsPrequal(true); $application->setSite($site); $siteLoanOfficer = $site->getSettings()->getLoanOfficer(); if (isset($siteLoanOfficer)) { $application->setLoanOfficer($siteLoanOfficer); } if ($securityContext->isGranted('IS_AUTHENTICATED_REMEMBERED')) { // autofill user info $application->getBorrower()->setEmail($user->getEmail()); $application->setUser($user); } $showReferralSources = false; $referralSourceCount = $em->getRepository('SudouxCmsFormBundle:ReferralSource')->findAllActiveBySiteCount($site); if ($referralSourceCount > 0) { $showReferralSources = true; } $form = $this->createForm(new LoanApplicationType($site), $application, array('validation_groups' => array('prequalify'))); if ($request->getMethod() == 'POST') { $form->bindRequest($request); if ($form->isValid()) { try { $em->persist($application); $em->flush(); $emailUtil = $this->get('sudoux.cms.message.email_util'); // notify the borrrower $email = new Email(); $email->setSubject('Pre-qualification Application Complete'); $email->setMessage($this::PREQUAL_SUCCESS_MESSAGE); $email->setRecipient($application->getBorrower()->getEmail()); $email->setRecipientName($application->getBorrower()->getFullName()); $email->setSite($site); $emailUtil->logAndSend($email); // notifiy the site admin $email = new Email(); $email->setSubject('A borrower has completed a pre-qualification application'); $message = sprintf("A borrower has completed a pre-qualification application. <a href=\"%s\">Click here</a> to view the application.", $this->generateUrl('sudoux_mortgage_admin_loan_step1', array('id' => $application->getId()), true)); $message .= sprintf('<p>Borrower: %s<br/>', $application->getBorrower()->getFullName()); $message .= sprintf('Email: %s<br/>', $application->getBorrower()->getEmail()); $message .= sprintf('Phone: %s</p>', $application->getBorrower()->getPhoneHome()); if ($application->getCoBorrower()->count() > 0) { $coBorrower = $application->getCoBorrower()->get(0); $message .= sprintf('<p>Co-Borrower: %s<br/>', $coBorrower->getFullName()); $message .= sprintf('Email: %s<br/>', $coBorrower->getEmail()); $message .= sprintf('Phone: %s</p>', $coBorrower->getPhoneHome()); } $email->setMessage($message); $email->setSite($site); // notify the site admin or lo $loanOfficer = $application->getLoanOfficer(); if (isset($loanOfficer)) { $notificationEmail = $loanOfficer->getEmail(); $email->setRecipientName($loanOfficer->getFullName()); } else { $notificationEmail = $site->getSettings()->getInheritedWebsiteEmail(); $email->setRecipientName('Site Administrator'); } $email->setBcc($site->getSettings()->getInheritedWebsiteEmailBcc()); $email->setRecipient($notificationEmail); $emailUtil->logAndSend($email); $job = new Job('sudoux:mortgage:loan', array('add_loan_prospects', sprintf('--loan_id=%s', $application->getId()), '--env=' . $this->get('kernel')->getEnvironment(), '--no-debug'), true, 'loan_process_queue'); $em->persist($job); $em->flush(); $redirectUrl = $site->getSettings()->getInheritedPrequalCompleteUrl(); if (isset($redirectUrl)) { if ($this->get('kernel')->getEnvironment() == 'dev') { $redirectUrl = '/app_dev.php' . $redirectUrl; } } else { $redirectUrl = $this->generateUrl('sudoux_mortgage_loan_prequalify_complete'); } return $this->redirect($redirectUrl); } catch (\Exception $e) { $logger = $this->get('logger'); $logger->crit($e->getMessage()); } } } return $this->render('SudouxMortgageBundle:LoanApplicationFront:prequalify.html.twig', array('form' => $form->createView(), 'application' => $application, 'officers' => $officers, 'showReferralSources' => $showReferralSources)); }
/** * @param $fannieMaeData * @param LoanApplication $application * @param int $source * @return LoanApplication */ public function convertFannieMaeToLoanApplication($fannieMaeData, LoanApplication $application = null, $source = 0) { if (isset($application)) { // remove data for update $application->removeAllAssetAccount(); $application->removeAllAssetRealEstate(); // reset housing expense } else { $application = new LoanApplication(); $application->setLastStepCompleted(6); $application->setHasRealtor(false); $application->setSource($source); $housingExpense = new ExpenseHousing(); $application->setExpenseHousing($housingExpense); } $loanAmount = StringUtil::find($fannieMaeData, "01A", 131, 15); $application->setLoanAmount($this->toFloat($loanAmount)); $loanTerm = StringUtil::find($fannieMaeData, "01A", 153, 3); $application->setLoanTerm($this->getLoanTerm($loanTerm)); $loanType = StringUtil::find($fannieMaeData, "02B", 6, 2); $application->setLoanType($this->getLoanType($loanType)); // refi data $refinanceYearAquired = StringUtil::find($fannieMaeData, "02D", 4, 4); $application->setRefinanceYearAquired($this->toInt($refinanceYearAquired)); $refinanceOriginalCost = StringUtil::find($fannieMaeData, "02D", 8, 15); $application->setRefinanceOriginalCost($this->toFloat($refinanceOriginalCost)); $refinanceExistingLiens = StringUtil::find($fannieMaeData, "02D", 23, 15); $application->setRefinanceExistingLiens($this->toFloat($refinanceExistingLiens)); $refinancePurpose = StringUtil::find($fannieMaeData, "02D", 68, 2); $application->setRefinancePurpose($this->getRefinancePurpose($refinancePurpose)); /*$refinancePurpose = StringUtil::find($fannieMaeData, "02D", 68, 2); $application->setRefinanceCurrentLender($refinanceCurrentLender); $application->setRefinanceCurrentLoanType($refinanceCurrentLoanType); $application->setRefinanceCurrentRate($refinanceCurrentRate);*/ $salePrice = StringUtil::find($fannieMaeData, "07A", 4, 15); $application->setSalePrice($this->toFloat($salePrice)); $numUnits = StringUtil::find($fannieMaeData, "02A", 100, 3); $application->setNumUnits($this->toInt($numUnits)); $propertyYearBuilt = StringUtil::find($fannieMaeData, "02A", 185, 4); $application->setPropertyYearBuilt($this->toInt($propertyYearBuilt)); $propertyType = StringUtil::find($fannieMaeData, "LNC", 6, 2); $application->setPropertyType($this->getPropertyType($propertyType)); $residencyType = StringUtil::find($fannieMaeData, "02B", 88, 1); $application->setResidencyType($this->getResidencyType($residencyType)); $titleManner = StringUtil::find($fannieMaeData, "02B", 89, 60); $application->setTitleManner($titleManner); $titleCompany = StringUtil::find($fannieMaeData, "02C", 4, 60); $application->setTitleCompany1($titleCompany); // property_location \Sudoux\Cms\LocationBundle\Entity\Location $propertyLocation = $application->getPropertyLocation(); $propertyAddress = StringUtil::find($fannieMaeData, "02A", 4, 50); $propertyLocation->setAddress1($propertyAddress); $propertyCity = StringUtil::find($fannieMaeData, "02A", 54, 35); $propertyLocation->setCity($propertyCity); //echo $propertyCity; exit; $propertyState = StringUtil::find($fannieMaeData, "02A", 89, 2); $propertyStateEntity = $this->em->getRepository('SudouxCmsLocationBundle:State')->findStateByAbbreviation($propertyState); $propertyLocation->setState($propertyStateEntity); $propertyZipcode = StringUtil::find($fannieMaeData, "02A", 91, 5); $propertyLocation->setZipcode($this->toZipcode($propertyZipcode)); $propertyUnit = StringUtil::find($fannieMaeData, "02A", 55, 11); $propertyLocation->setUnit($propertyUnit); // reset the housing expense $housingExpense = $application->getExpenseHousing(); if (isset($housingExpense)) { $housingExpense->reset(); } $borrower = $application->getBorrower(); $this->convertFannieMaeToBorrower($application, $borrower, $fannieMaeData, array('03A_suffix' => 'BW')); $fnmCoBorrowers = StringUtil::findLinesStartingWith($fannieMaeData, "03AQZ"); $coBorrowers = $application->getCoBorrower(); foreach ($fnmCoBorrowers as $fnmCoBorrower) { $coBorrowerSsn = StringUtil::find($fnmCoBorrower, "03AQZ", 6, 9); $coBorrower = null; if (count($coBorrowers) > 0) { // check if coborrower exists foreach ($coBorrowers as $cb) { $existingSsn = preg_replace("/[^0-9]/", "", $cb->getSsn()); if ($existingSsn == $coBorrowerSsn) { $coBorrower = $cb; break; } } } if (!isset($coBorrower)) { $coBorrower = new Borrower(); $application->addCoBorrower($coBorrower); $coBorrower->setSsn($coBorrowerSsn); } $this->convertFannieMaeToBorrower($application, $coBorrower, $fannieMaeData, array('03A_suffix' => 'QZ')); } //exit; return $application; }