/** * check customer registration and carry on the registration process if it is not completed * * Returns True if valid, false otherwise. * * @param string $email_address * * @return int */ public function checkRegister($refno, $email, $isChangeEmail) { (string) ($refno = preg_replace('/X/', '', $refno)); $customermgr = new Manager_Core_Customer(); $customer = $customermgr->getCustomerByEmailAddress($email); $params = Zend_Registry::get('params'); $mac = new Application_Core_Security($params->myhomelet->activation_mac_secret, false); $digest = $mac->generate(array('email' => $email)); $activationLink = 'refno=' . $refno . '&' . 'email=' . $email . '&' . 'mac=' . $digest; $customerMap = new Datasource_Core_CustomerMaps(); if ($customer) { if (!$customerMap->getMap(Model_Core_Customer::LEGACY_IDENTIFIER, $refno)) { $customermgr->linkLegacyToNew($refno, $customer->getIdentifier(Model_Core_Customer::IDENTIFIER)); } if (!$customer->getEmailValidated()) { $mail = new Application_Core_Mail(); $mail->setTo($email, null); $mail->setFrom('*****@*****.**', 'HomeLet'); $mail->setSubject('My HomeLet account validation'); $mail->applyTemplate('core/account-validation', array('activationLink' => $activationLink, 'homeletWebsite' => $params->homelet->domain, 'firstname' => $customer->getFirstName(), 'templateId' => 'HL2442 12-12', 'heading' => 'Validating your My HomeLet account', 'imageBaseUrl' => $params->weblead->mailer->imageBaseUrl), false, '/email-branding/homelet/portal-footer.phtml', '/email-branding/homelet/portal-header.phtml'); $mail->applyTextTemplate('core/account-validationtxt', array('activationLink' => $activationLink, 'homeletWebsite' => $params->homelet->domain, 'firstname' => $customer->getFirstName(), 'templateId' => 'HL2442 12-12', 'heading' => 'Validating your My HomeLet account'), false, '/email-branding/homelet/portal-footer-txt.phtml', '/email-branding/homelet/portal-header-txt.phtml'); // Send email $mail->send(); return 1; } else { return 0; } } else { if ($isChangeEmail) { $cMap = $customerMap->getMap(Model_Core_Customer::LEGACY_IDENTIFIER, $refno); if ($cMap) { $customer = $customermgr->getCustomer(Model_Core_Customer::IDENTIFIER, $cMap->getIdentifier()); $customer->setEmailAddress($email); $customermgr->updateCustomer($customer); $legacyids = $customerMap->getLegacyIDs($customer->getIdentifier()); foreach ($legacyids as $legacyid) { if ($legacyid != $refno) { $customer = $customermgr->getCustomer(Model_Core_Customer::LEGACY_IDENTIFIER, $legacyid); $customer->setEmailAddress($email); $customermgr->updateCustomer($customer); } } return 0; } } $oldCustomer = $customermgr->getCustomer(Model_Core_Customer::LEGACY_IDENTIFIER, $refno); $mail = new Application_Core_Mail(); $mail->setTo($email, null); $mail->setFrom('*****@*****.**', 'HomeLet'); $mail->setSubject("Don't forget to register your My HomeLet account"); $mail->applyTemplate('core/partial-registration', array('activationLink' => $activationLink, 'homeletWebsite' => $params->homelet->domain, 'firstname' => $oldCustomer->getFirstName(), 'templateId' => 'HL2469 12-12', 'heading' => 'Get even more with your My HomeLet account', 'imageBaseUrl' => $params->weblead->mailer->imageBaseUrl), false, '/email-branding/homelet/portal-footer.phtml', '/email-branding/homelet/portal-header.phtml'); $mail->applyTextTemplate('core/partial-registrationtxt', array('activationLink' => $activationLink, 'homeletWebsite' => $params->homelet->domain, 'firstname' => $oldCustomer->getFirstName(), 'templateId' => 'HL2469 12-12', 'heading' => 'Get even more with your My HomeLet account'), false, '/email-branding/homelet/portal-footer-txt.phtml', '/email-branding/homelet/portal-header-txt.phtml'); // Send email $mail->send(); return 2; } }
/** * Create possessions subform * * @return void */ public function init() { $params = Zend_Registry::get('params'); $pageSession = new Zend_Session_Namespace('tenants_insurance_quote'); $possession = new Datasource_Insurance_Policy_SpecPossessions($pageSession->PolicyNumber); $maximumReached = $possession->countPossessions() == $possession->maxPossessions; if (isset($pageSession->CustomerRefNo)) { $customerManager = new Manager_Core_Customer(); $customer = $customerManager->getCustomer(Model_Core_Customer::LEGACY_IDENTIFIER, $pageSession->CustomerRefNo); switch ($customer->getTitle('title')) { case 'Mr': case 'Sir': $this->gender = 'male'; break; case 'Mrs': case 'Ms': case 'Miss': $this->gender = 'female'; break; default: $this->gender = 'unknown'; break; } } // Add taking items from house element $this->addElement('radio', 'away_from_home', array('label' => 'Would you like to cover your belongings that you take away from the home?', 'required' => true, 'multiOptions' => array('yes' => 'Yes', 'no' => 'No'), 'separator' => '', 'label_placement' => 'prepend', 'validators' => array(array('NotEmpty', true, array('messages' => array('isEmpty' => 'Please select whether you take items away from the home', 'notEmptyInvalid' => 'Please select whether you take items away from the home')))))); // Add possessions cover select element $this->addElement('select', 'possessions_cover', array('label' => 'Cover level', 'required' => false, 'multiOptions' => array('' => '--- please select ---', '1000' => html_entity_decode('£', ENT_COMPAT, 'UTF-8') . '1000', '2000' => html_entity_decode('£', ENT_COMPAT, 'UTF-8') . '2000', '4000' => html_entity_decode('£', ENT_COMPAT, 'UTF-8') . '4000', '6000' => html_entity_decode('£', ENT_COMPAT, 'UTF-8') . '6000'), 'validators' => array(array('NotEmpty', true, array('messages' => array('isEmpty' => 'Please select a level of cover', 'notEmptyInvalid' => 'Please select a level of cover')))), 'attribs' => array('class' => 'form-control'))); // Add above x amount element $this->addElement('radio', 'above_x', array('label' => 'Would you like to cover any individual items that can be taken out and about that are worth more than £1,000?', 'required' => true, 'multiOptions' => array('yes' => 'Yes', 'no' => 'No'), 'separator' => '', 'label_placement' => 'prepend', 'validators' => array(array('NotEmpty', true, array('messages' => array('isEmpty' => 'Please select if you would like to cover any individual items with a value of more than £1,000', 'notEmptyInvalid' => 'Please select if you would like to cover any individual items with a value of more than £1,000')))))); // Add possessions cover select element $this->addElement('select', 'possession_categoryId', array('label' => 'Category', 'required' => false, 'multiOptions' => $possession->listCategories(), 'validators' => array(array('NotEmpty', true, array('messages' => array('isEmpty' => 'Please select a category', 'notEmptyInvalid' => 'Please select a category')))), 'attribs' => array('class' => 'form-control'))); // Add fields for new possession types and values (the visible fields associated with the "Add possession" button) $this->addElement('text', 'possession_description', array('required' => false, 'filters' => array('StringTrim'), 'validators' => array(array('NotEmpty', true, array('messages' => array('isEmpty' => 'Please enter a description of the possession', 'notEmptyInvalid' => 'Please enter a description of the possession'))), array('regex', true, array('pattern' => '/^[0-9a-z\\ \\-\\,\\(\\)\\.\']{3,}$/i', 'messages' => 'Possession description must contain at least three alphanumeric characters and only basic punctuation (space, hyphen, comma, round brackets, full stop and single quote)'))), 'attribs' => array('data-validate' => 'validate', 'data-required' => 'required', 'class' => 'form-control'))); $this->addElement('text', 'possession_value', array('label' => "Item value", 'required' => false, 'validators' => array(array('NotEmpty', true, array('messages' => array('isEmpty' => 'Please enter the value of the possession', 'notEmptyInvalid' => 'Please enter the value of the possession'))), array('GreaterThan', true, array('min' => $params->uw->mv->tenantsp->specPossession, 'messages' => 'Possession value must be above £1,000'))), 'attribs' => array('data-required' => 'required', 'data-validate' => 'validate', 'data-type' => 'currency', 'class' => 'form-control'))); // Add a filter suitable for currency input - this strips anything non-digit and non-decimal point such as pound // symbols and commas $possessionValue = $this->getElement('possession_value'); $possessionValue->addFilter('callback', function ($v) { return preg_replace('/[^\\d\\.]/', '', $v); }); if ($maximumReached) { // Disable the possessions entry forms $this->possession_description->setAttrib('disabled', 'disabled'); $this->possession_jewellery->setAttrib('disabled', 'disabled'); $this->possession_value->setAttrib('disabled', 'disabled'); } // Set custom subform decorator $this->setDecorators(array(array('ViewScript', array('viewScript' => 'subforms/possessions.phtml')))); // Strip all tags to prevent XSS errors - done iteratively so not to overwrite any existing filters foreach ($this->getElements() as $element) { $element->addFilter('StripTags'); } $this->setElementDecorators(array(array('ViewHelper', array('escape' => false)), array('Label', array('escape' => false)))); $view = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view'); $view->headScript()->appendFile('/assets/tenants-insurance-quote/js/possessions.js', 'text/javascript'); }
public function saveAction() { if ($this->getRequest()->isPost()) { $password1 = $this->getRequest()->getPost('password1'); $password2 = $this->getRequest()->getPost('password2'); if ($password1 != $password2) { $return['status'] = 'error'; $return['errorMessage'] = 'Passwords do not match. Please re-enter'; } else { $customerManager = new Manager_Core_Customer(); $pageSession = new Zend_Session_Namespace('tenants_insurance_quote'); $legacyCustomerReference = $pageSession->CustomerRefNo; // This will create a customer record as we don't currently have one (only a legacy one) $customerID = $customerManager->linkLegacyToNew($legacyCustomerReference, null, Model_Core_Customer::TENANT); // Now we need to retreive the newly created customer and update the password $customer = $customerManager->getCustomer(Model_Core_Customer::IDENTIFIER, $customerID); $customer->setPassword($password1); $customerManager->updateCustomer($customer); // Email the new customer to give them their details $metaData = array('name' => $customer->getFirstName(), 'quoteNumber' => $pageSession->PolicyNumber); // Log the customer in $auth = Zend_Auth::getInstance(); $auth->setStorage(new Zend_Auth_Storage_Session('homelet_customer')); $adapter = $customerManager->getAuthAdapter(array('password' => $this->getRequest()->getPost('password1'), 'email' => $customer->getEmailAddress())); $result = $auth->authenticate($adapter); if (!$result->isValid()) { // This really shouldn't ever happen as we've just created the customer!! } else { $storage = $auth->getStorage(); $storage->write($adapter->getResultRowObject(array('title', 'first_name', 'last_name', 'email_address', 'id'))); } $emailer = new Application_Core_Mail(); $emailer->setTo($customer->getEmailAddress(), $customer->getFirstName() . ' ' . $customer->getLastName())->setSubject('Homelet - Saved Tenants Contents Insurance Quote')->applyTemplateWithoutFooter('tenantsinsurancequote_saved', $metaData); $emailer->send(); $return['status'] = 'saved'; } echo Zend_Json::encode($return); } }
/** * Pull in the sub forms that comprise My HomeLet registration * * @return void */ public function init() { // Switch my homelet subform $auth = Zend_Auth::getInstance(); $auth->setStorage(new Zend_Auth_Storage_Session('homelet_customer')); if ($auth->hasIdentity()) { // We have an identified, logged-in customer $this->addSubForm(new Account_Form_Subforms_LoggedIn($auth), 'subform_logged_in'); } else { // Grab the legacy customer from the session $pageSession = new Zend_Session_Namespace('landlords_insurance_quote'); $customerManager = new Manager_Core_Customer(); $legacyCustomer = $customerManager->getCustomer(Model_Core_Customer::LEGACY_IDENTIFIER, $pageSession->customerRefNo); // Do we have a new customer? $newCustomer = $customerManager->getCustomerByEmailAddress($legacyCustomer->getEmailAddress()); if ($newCustomer instanceof Model_Core_Customer) { $this->addSubForm(new Account_Form_Subforms_Login(), 'subform_login'); } else { $this->addSubForm(new Account_Form_Subforms_Register(), 'subform_register'); } } }
public function getCustomer($refno) { $insLegacyCustomerManager = new Manager_Core_Customer(); $customer = $insLegacyCustomerManager->getCustomer(Model_Core_Customer::LEGACY_IDENTIFIER, $refno); return $customer; }
/** * Edit account action * * @return void */ public function editAccountAction() { $this->_setMetaTitle('My HomeLet | Edit Account'); $this->_setBreadcrumbs(array('/' => 'Home', '/my-homelet' => 'My HomeLet', '/my-homelet/edit-account' => 'My Account Details')); $form = new Account_Form_EditAccount(); // Populate the form with the security question options $securityQuestionModel = new Datasource_Core_SecurityQuestion(); $securityQuestionOptions = $securityQuestionModel->getOptions(); foreach ($securityQuestionOptions as $option) { $form->security_question->addMultiOption($option['id'], $option['question']); } // Get the customer session $customerSession = $this->auth->getStorage()->read(); // Retrieve the customer record $customermgr = new Manager_Core_Customer(); $customer = $customermgr->getCustomer(Model_Core_Customer::IDENTIFIER, $customerSession->id); if ($this->getRequest()->isPost()) { // Set the current password for validation $form->setCurrentPassword($customer->getPassword()); // Validate the form if ($form->isValid($this->getRequest()->getPost())) { // Update the customer if ($form->password->getValue() != '') { // Set new password $customer->setPassword($form->password->getValue()); } $customer->setSecurityQuestion($form->security_question->getValue()); $customer->setSecurityAnswer($form->security_answer->getValue()); $this->view->accountUpdated = true; $customermgr->updateCustomer($customer); } } else { // Populate the form with customers data $form->security_question->setValue($customer->getSecurityQuestion()); $form->security_answer->setValue($customer->getSecurityAnswer()); } $form->email->setValue($customer->getEmailAddress()); $form->title->setValue($customer->getTitle()); $form->first_name->setValue($customer->getFirstName()); $form->last_name->setValue($customer->getLastName()); $this->view->form = $form; }
/** * Exportable login status - generates a complete HTML5 mini-page for * embedding in a remote or a local iframe. Note that URL to this action is * set in application/routes/config/account.ini as /my-homelet/login-status * * @return void */ public function exportableLoginStatusAction() { // No layout desired, outputs a complete HTML5 page. $this->_helper->getHelper('layout')->disableLayout(); // Ensure cross-site origin is allowed //header('Access-Control-Allow-Origin: *'); // Pass in the base URL to the view so links are absolute to the HLF $params = Zend_Registry::get('params'); $this->view->hlfBaseUrl = $params->homelet->domain; // Check if user logged in $this->view->loggedIn = false; $auth = Zend_Auth::getInstance(); $auth->setStorage(new Zend_Auth_Storage_Session('homelet_customer')); if ($auth->hasIdentity()) { // Logged in $this->view->loggedIn = true; // Get customer's name // Get the customer session $customerSession = $auth->getStorage()->read(); // Retrieve the customer record $customermgr = new Manager_Core_Customer(); $customer = $customermgr->getCustomer(Model_Core_Customer::IDENTIFIER, $customerSession->id); $this->view->firstName = htmlentities($customer->getFirstName()); } }
/** * Helper function to populate the zend form elements with database data * * @param Zend_Form $pageForm form definition for this step * @param int $stepNum current step number * * @return void */ private function _formStepCommonPopulate($pageForm, $stepNum) { $pageSession = new Zend_Session_Namespace('tenants_insurance_quote'); // First of all check that this form should be viewable and the user isn't trying to skip ahead $this->view->stepNum = $stepNum; $this->view->stepMax = $this->_stepMax; // Check to see if the user is trying to skip ahead in the quote $tooFarAhead = false; if ((!isset($pageSession->completed) || is_null($pageSession->completed)) && $stepNum != 1) { $tooFarAhead = true; $lastCompleted = 1; } elseif ($stepNum > 1) { // Check to see if any pages previous to the one the user's trying to get to are incomplete $tooFarAhead = false; for ($i = 1; $i < $stepNum; $i++) { if (!isset($pageSession->completed[$i]) || !$pageSession->completed[$i]) { $tooFarAhead = true; $lastCompleted = $i; break; break; } } } if ($tooFarAhead) { // Drop user onto page that needs completing $this->_helper->redirector->gotoUrl('/tenants/insurance-quote-b/step' . $lastCompleted); return false; } // Now check to see if they need to login (using an existing email address without being logged in) if ($stepNum > 1) { // Before we do ANYTHING we need to check to see if the email address entered matches a customer record // we already have - if it does we need to ask them to login before they proceed. $customerReferenceNumber = $pageSession->CustomerRefNo; $customerManager = new Manager_Core_Customer(); $legacyCustomer = $customerManager->getCustomer(Model_Core_Customer::LEGACY_IDENTIFIER, $customerReferenceNumber); $emailAddress = $legacyCustomer->getEmailAddress(); $customer = $customerManager->getCustomerByEmailAddress($emailAddress); if ($customer) { // There is already a customer entry for this email address - so we need to see if they are logged in // if not we need to force them to login $auth = Zend_Auth::getInstance(); $auth->setStorage(new Zend_Auth_Storage_Session('homelet_customer')); /*if ($auth->hasIdentity()) { $loggedInEmail = $auth->getStorage()->read()->email_address; if ($loggedInEmail != $customer->getEmailAddress()) { // They are logged in but not who they should be to do this quote $this->_helper->redirector->gotoUrl('/account/login?refer=tenants-insurance&step='. $stepNum); return false; } } else { // They aren't logged in and need to $this->_helper->redirector->gotoUrl('/account/login?refer=tenants-insurance&step='. $stepNum); return false; }*/ } } // Echo out some debug info if not in production mode Application_Core_Logger::log("Policy Number : " . $this->_policyNumber); Application_Core_Logger::log("Customer Ref No : " . $this->_customerReferenceNumber); Application_Core_Logger::log("agentSchemeNumber : " . $this->_agentSchemeNumber); $formData = array(); // If step 1 and not in session (so producing a quick quote) - we need to pre-populate // a few bits if the customer is already logged into the site if ($stepNum == 1 && !isset($pageSession->CustomerRefNo)) { $auth = Zend_Auth::getInstance(); $auth->setStorage(new Zend_Auth_Storage_Session('homelet_customer')); if ($auth->hasIdentity()) { // Customer is logged in and starting a new quote - so we need to pre-populate the customers details from stored details $customerID = $auth->getStorage()->read()->id; $customerManager = new Manager_Core_Customer(); $customer = $customerManager->getCustomer(Model_Core_Customer::IDENTIFIER, $customerID); // Get the customer's legacy record too as DoB is only in the old system $legacyCustomer = $customerManager->getCustomer(Model_Core_Customer::LEGACY_IDENTIFIER, $customerID); $formData['title'] = $customer->getTitle(); $formData['first_name'] = $customer->getFirstName(); $formData['last_name'] = $customer->getLastName(); $formData['phone_number'] = $customer->getTelephone(Model_Core_Customer::TELEPHONE1); $formData['mobile_number'] = $customer->getTelephone(Model_Core_Customer::TELEPHONE2); $formData['email_address'] = $customer->getEmailAddress(); // Fetch DoB from old customer manager $formData['date_of_birth_at'] = $legacyCustomer->getDateOfBirth(); $pageForm->populate($formData); } } // Only populate from DB if we are in session and have a reference number if (isset($pageSession->CustomerRefNo)) { $customerReferenceNumber = $pageSession->CustomerRefNo; $policyNumber = $pageSession->PolicyNumber; // Populate $formData with data from model, if available switch ($stepNum) { case 1: // Personal Details section $customerManager = new Manager_Core_Customer(); $customer = $customerManager->getCustomer(Model_Core_Customer::LEGACY_IDENTIFIER, $customerReferenceNumber); $titleOptions = TenantsInsuranceQuoteB_Form_Subforms_PersonalDetails::$titles; if (in_array($customer->getTitle(), $titleOptions)) { $formData['title'] = $customer->getTitle(); } else { $formData['title'] = "Other"; $formData['other_title'] = $customer->getTitle(); } $formData['first_name'] = $customer->getFirstName(); $formData['last_name'] = $customer->getLastName(); $formData['phone_number'] = $customer->getTelephone(Model_Core_Customer::TELEPHONE1); $formData['mobile_number'] = $customer->getTelephone(Model_Core_Customer::TELEPHONE2); $formData['email_address'] = $customer->getEmailAddress(); $dob = $customer->getDateOfBirthAt(); if (null != $dob && '0000-00-00' != $dob) { $formData['date_of_birth_at'] = Application_Core_Utilities::mysqlDateToUk($dob); } // Data Protection section $dpaManager = new Manager_Core_DataProtection(); $dpaItems = $dpaManager->getItems($customerReferenceNumber, Model_Core_DataProtection_ItemEntityTypes::INSURANCE); foreach ($dpaItems as $currentItem) { switch ($currentItem->constraintTypeId) { case Model_Core_DataProtection_ItemConstraintTypes::MARKETING_BY_PHONEANDPOST: if ($currentItem->isAllowed) { $formData['dpa_phone_post'] = 0; } else { $formData['dpa_phone_post'] = 1; } break; case Model_Core_DataProtection_ItemConstraintTypes::MARKETING_BY_SMSANDEMAIL: if ($currentItem->isAllowed) { $formData['dpa_sms_email'] = 0; // For Redmine Ref #8003, "Updated marketing preference questions on online quotes" } else { $formData['dpa_sms_email'] = 1; // For Redmine Ref #8003, "Updated marketing preference questions on online quotes" } break; case Model_Core_DataProtection_ItemConstraintTypes::MARKETING_BY_THIRDPARTY: if ($currentItem->isAllowed) { $formData['dpa_resale'] = 1; } else { $formData['dpa_resale'] = 0; } break; } } // Contents Insurance section $quoteManager = new Manager_Insurance_TenantsContentsPlus_Quote(null, null, $this->_policyNumber); // If we've retrieved this quote we need to setup some session variables to match the quote (agent scheme number mostly) $session = new Zend_Session_Namespace('homelet_global'); $session->agentSchemeNumber = Manager_Core_Agent::filterAsn($quoteManager->getAgentSchemeNumber()); $contentsSI = $quoteManager->getCoverAmount(Manager_Insurance_TenantsContentsPlus_Quote::CONTENTS); // TODO: Remove the hard-coded contents insured splits - should be loaded from DB if ($contentsSI == '5000' || $contentsSI == '7500' || $contentsSI == '10000' || $contentsSI == '15000') { $formData['contents_cover_a'] = $contentsSI; } else { $formData['contents_cover_a'] = '15000+'; $formData['contents_cover_b'] = $contentsSI; } // Shares section $sharersManager = new Manager_Insurance_TenantsContentsPlus_Sharers(); $existingSharers = $sharersManager->getSharers($policyNumber); $formData['policy_sharers'] = 0; if ($existingSharers) { if ($existingSharers->getSharerOccupation(1) != '') { $formData['policy_sharers'] = 1; $formData['policy_sharer1_occupation'] = $existingSharers->getSharerOccupation(1); } if ($existingSharers->getSharerOccupation(2) != '') { $formData['policy_sharers'] = 2; $formData['policy_sharer2_occupation'] = $existingSharers->getSharerOccupation(2); } } for ($i = 1; $i <= $pageForm->maxSharers; $i++) { $formData["policy_sharer{$i}_occupation"] = $existingSharers->getSharerOccupation($i); } // Decide max number of sharers allowed based on contents insured value $contentsAmount = new Zend_Currency(array('value' => $contentsSI, 'precision' => 0)); $sharersAllowed = $sharersManager->getNoOfSharersAllowed($contentsAmount); // Push this into Javascript on the page $this->view->headScript()->appendScript("var sharersAllowed = {$sharersAllowed};"); // Initial Disclosure Agreement section // As we have a customer reference number they must have saved step 1 at some point which means // they must have agreed to the IDD section $formData['idd'] = 1; break; case 2: // Unspecified Possessions section $quoteManager = new Manager_Insurance_TenantsContentsPlus_Quote(null, null, $this->_policyNumber); $unspecSI = $quoteManager->getCoverAmount(Manager_Insurance_TenantsContentsPlus_Quote::UNSPECIFIEDPOSSESSIONS); // If step has been completed before we can assume some defaults that we'll over-write later if (isset($pageSession->completed[2]) && $pageSession->completed[2] == true or $quoteManager->getPropertyPostcode() != '') { $formData['away_from_home'] = 'no'; $formData['above_x'] = 'no'; $formData['bicycle'] = 'no'; } // TODO: Re-factor this so that it doesn't use hardcoded pricing breaks anymore if ($unspecSI > 0) { $formData['away_from_home'] = 'yes'; $formData['possessions_cover'] = $unspecSI; } //TODO: This should be talking to the quote manager NOT directly to the datasource $possessions = new Datasource_Insurance_Policy_SpecPossessions($pageSession->PolicyNumber); if ($possessions->countPossessions() > 0) { $formData['above_x'] = 'yes'; } // Bicycle section //TODO: This should be talking to the quote manager NOT directly to the datasource $bicycle = new Datasource_Insurance_Policy_Cycles($this->_customerReferenceNumber, $this->_policyNumber); if ($bicycle->countBikes() > 0) { $formData['bicycle'] = 'yes'; } break; case 3: // Insured Address section // Fetch previously stored address $quoteManager = new Manager_Insurance_TenantsContentsPlus_Quote(null, null, $this->_policyNumber); $addressArray = $quoteManager->getPropertyAddress(); if ($addressArray['postcode'] != '') { if (strpos($addressArray['address1'], ',') !== false) { $formData['ins_house_number_name'] = preg_replace('/,.*$/', '', $addressArray['address1']); } else { $formData['ins_house_number_name'] = preg_replace('/ .*$/', '', $addressArray['address1']); } $formData['ins_postcode'] = $addressArray['postcode']; // Look up address again to populate dropdown $postcodeLookup = new Manager_Core_Postcode(); $addresses = $postcodeLookup->getPropertiesByPostcode(preg_replace('/[^\\w\\ ]/', '', $formData['ins_postcode'])); $addressList = array('' => '--- please select ---'); $filterString = is_numeric($formData['ins_house_number_name']) ? $formData['ins_house_number_name'] . ", " : $formData['ins_house_number_name']; foreach ($addresses as $address) { $addressList[$address['id']] = $address['singleLineWithoutPostcode']; if (stripos($address['singleLineWithoutPostcode'], $filterString) === 0) { $addressID = $address['id']; } } // Add some validation $ins_address = $pageForm->getSubForm('subform_insuredaddress')->getElement('ins_address'); $ins_address->setMultiOptions($addressList); $validator = new Zend_Validate_InArray(array('haystack' => array_keys($addressList))); $validator->setMessages(array(Zend_Validate_InArray::NOT_IN_ARRAY => 'Insured address does not match with postcode')); $ins_address->addValidator($validator, true); // Set the address to selected $ins_address->setValue($addressID); $addressID = null; // Make sure we don't use this again for the correspondance address! // Upsell Message section $pageSession = new Zend_Session_Namespace('tenants_insurance_quote'); $session = new Zend_Session_Namespace('homelet_global'); $agentSchemeNumber = $session->agentSchemeNumber; } // Correspondance Address section $customerManager = new Manager_Core_Customer(); $customer = $customerManager->getCustomer(Model_Core_Customer::LEGACY_IDENTIFIER, $this->_customerReferenceNumber); $addressLine1 = $customer->getAddressLine(Model_Core_Customer::ADDRESSLINE1); $addressPostcode = $customer->getPostCode(); if ($addressPostcode != '') { if (strpos($addressLine1, ',') !== false) { $formData['cor_house_number_name'] = preg_replace('/,.*$/', '', $addressLine1); } else { $formData['cor_house_number_name'] = preg_replace('/ .*$/', '', $addressLine1); } $formData['cor_postcode'] = $addressPostcode; // TODO: Surely if this postcode and house number matches the previous one // we can just tick the YES box and hide the correspondance address form?? $postcodeLookup = new Manager_Core_Postcode(); $addresses = $postcodeLookup->getPropertiesByPostcode(preg_replace('/[^\\w\\ ]/', '', $formData['cor_postcode'])); $addressList = array('' => '--- please select ---'); $filterString = is_numeric($formData['cor_house_number_name']) ? $formData['cor_house_number_name'] . ", " : $formData['cor_house_number_name']; foreach ($addresses as $address) { $addressList[$address['id']] = $address['singleLineWithoutPostcode']; if (stripos($address['singleLineWithoutPostcode'], $filterString) === 0) { $addressID = $address['id']; } } $cor_address = $pageForm->getSubForm('subform_correspondencedetails')->getElement('cor_address'); $cor_address->setMultiOptions($addressList); $validator = new Zend_Validate_InArray(array('haystack' => array_keys($addressList))); $validator->setMessages(array(Zend_Validate_InArray::NOT_IN_ARRAY => 'Insured address does not match with postcode')); $cor_address->addValidator($validator, true); $cor_address->setValue($addressID); } if ($addressPostcode != '' && $addressArray['postcode'] != '') { if ($cor_address->getValue() == $ins_address->getValue()) { $formData['cor_same_address'] = 'yes'; } else { $formData['cor_same_address'] = 'no'; } } // Letting Agent section // If the agent scheme number is not our default one - load the agent details $params = Zend_Registry::get('params'); $agentSchemeNumber = Manager_Core_Agent::filterAsn($quoteManager->getAgentSchemeNumber()); // How did you hear about us section $marketQuestion = new Manager_Core_ManagementInformation(); $formData['how_hear'] = $marketQuestion->getMarketingAnswers($this->_policyNumber); //Campaign code section $webLeadManager = new Manager_Core_WebLead(); $webLeadSummary = $webLeadManager->getSummary($this->_webLeadSummaryId); $formData['campaign_code'] = $webLeadSummary->promotionCode; // Start and end date $startDate = $quoteManager->getStartDate(); if ($startDate != '' && $startDate != '0000-00-00') { $formData['policy_start'] = substr($startDate, 8, 2) . '/' . substr($startDate, 5, 2) . '/' . substr($startDate, 0, 4); } break; case 4: // Important Information section // If this page has previously passed validation, we know what the answers // given must have been without hitting the DB (as anything else refers) if (isset($pageSession->completed[$stepNum]) && $pageSession->completed[$stepNum]) { $formData['declaration1'] = 'no'; $formData['declaration2'] = 'no'; $formData['declaration3'] = 'no'; $formData['declaration4'] = 'no'; $formData['declaration_confirmation'] = 'yes'; // If the step is completed we can also assume they said yes to the declaration agreement $formData['declaration_statement'] = 1; } break; case 5: // Not sure if we should really be loading payment methods back in // surely it would be best to just let them choose again break; case 'dd': $quoteManager = new Manager_Insurance_TenantsContentsPlus_Quote(null, null, $this->_policyNumber); $this->view->payMonthly = strtolower($quoteManager->getPayBy()) == 'monthly'; break; } $pageForm->populate($formData); // Populate the quick quote box $quoteManager = new Manager_Insurance_TenantsContentsPlus_Quote(null, null, $this->_policyNumber); $premiums = $quoteManager->calculatePremiums(); $fees = $quoteManager->getFees(); $this->view->premiums = $premiums; $this->view->fees = $fees; } else { // Not in session but there are some defaults we need to set for step 1 // TODO: Write the javascript better so we don't need to do fudges like this $this->view->headScript()->appendScript("var sharersAllowed = 0;"); } return true; }
/** * This method is called when the Reference Subject completes an email link. */ public function emailLinkEndAction() { $session = new Zend_Session_Namespace('referencing_global'); $params = Zend_Registry::get('params'); $referenceManager = new Manager_Referencing_Reference(); $reference = $referenceManager->getReference($session->referenceId); $customerId = $reference->customer->customerId; $customerManager = new Manager_Core_Customer(); $customer = $customerManager->getCustomer(Model_Core_Customer::IDENTIFIER, $customerId); $customerEmail = $customer->getEmailAddress(); $recipientName = $customer->getFirstName() . ' ' . $customer->getLastName(); //Generate the security token to be appended to the URL. $hashingString = $params->pll->emailLink->security->securityString; $securityManager = new Manager_Core_Security($hashingString); $customerToken = $securityManager->generate(array('refNo' => $reference->externalId, 'customerId' => $customerId)); //Prepare the meta data. $metaData = array(); $metaData['firstName'] = $customer->getFirstName(); $metaData['lastName'] = $customer->getLastName(); $metaData['linkUrl'] = $params->pll->emailLink->email->linkEndUrl; $metaData['linkUrl'] .= '?'; $metaData['linkUrl'] .= "refNo={$reference->externalId}"; $metaData['linkUrl'] .= '&'; $metaData['linkUrl'] .= "customerToken={$customerToken}"; //Send email to landlords $emailer = new Application_Core_Mail(); $emailer->setTo($customerEmail, $recipientName); //Set the email from details. $emailFrom = $params->pll->emailLink->email->from; $emailFromName = $params->pll->emailLink->email->fromname; $emailer->setFrom($emailFrom, $emailFromName); //Set the subject line $addressLine1 = $reference->propertyLease->address->addressLine1; $town = $reference->propertyLease->address->town; $postCode = $reference->propertyLease->address->postCode; $emailer->setSubject("Re: {$addressLine1}, {$town}, {$postCode}"); //Apply template and send. $emailer->applyTemplate('landlordsreferencing_emaillinkend', $metaData, false); $emailer->send(); //Delete session unset($session->userType); unset($session->referenceId); $this->view->fractionComplete = 95; }
/** * Helper function to populate the zend form elements with database data * * @param Zend_Form $pageForm form definition for this step * @param int $stepNum current step number * * @return void */ private function _formStepCommonPopulate($pageForm, $stepNum) { $this->view->stepNum = $stepNum; $this->view->stepMax = $this->_stepMax; // Check to see if the user is trying to skip ahead in the quote $pageSession = new Zend_Session_Namespace('landlords_insurance_quote'); $tooFarAhead = false; if ((!isset($pageSession->completed) || is_null($pageSession->completed)) && $stepNum != 1) { $tooFarAhead = true; $lastCompleted = 1; } elseif ($stepNum > 1) { // Check to see if any pages previous to the one the user's trying to get to are incomplete $tooFarAhead = false; for ($i = 1; $i < $stepNum; $i++) { if (!isset($pageSession->completed[$i]) || !$pageSession->completed[$i]) { $tooFarAhead = true; $lastCompleted = $i; break; } } } if ($tooFarAhead) { // Drop user onto page that needs completing $this->_helper->redirector->gotoUrl('/landlords/insurance-quote/step' . $lastCompleted); return false; } if ($stepNum > 1) { // Before we do ANYTHING we need to check to see if the email address entered matches a customer record // we already have - if it does we need to ask them to login before they proceed. $customerReferenceNumber = $this->_customerReferenceNumber; $customerManager = new Manager_Core_Customer(); $legacyCustomer = $customerManager->getCustomer(Model_Core_Customer::LEGACY_IDENTIFIER, $customerReferenceNumber); $emailAddress = $legacyCustomer->getEmailAddress(); $customer = $customerManager->getCustomerByEmailAddress($emailAddress); if ($customer) { // There is already a customer entry for this email address - so we need to see if they are logged in // if not we need to force them to login $auth = Zend_Auth::getInstance(); $auth->setStorage(new Zend_Auth_Storage_Session('homelet_customer')); if ($auth->hasIdentity()) { $loggedInEmail = $auth->getStorage()->read()->email_address; if ($loggedInEmail != $customer->getEmailAddress()) { // They are logged in but not who they should be to do this quote $this->_helper->redirector->gotoUrl('/account/login?refer=landlords-insurance&step=' . $stepNum); return false; } } else { // TODO: Check that removing the login redirection will not break other processes // They aren't logged in and need to /*$this->_helper->redirector->gotoUrl('/account/login?refer=landlords-insurance&step='. $stepNum); return false;*/ } } } $formData = array(); // If step 1 and not in session (so producing a quick quote) - we need to pre-populate // a few bits if the customer is already logged into the site if ($stepNum == 1 && !isset($pageSession->CustomerRefNo)) { $auth = Zend_Auth::getInstance(); $auth->setStorage(new Zend_Auth_Storage_Session('homelet_customer')); if ($auth->hasIdentity()) { // Customer is logged in and starting a new quote - so we need to pre-populate the customers details from stored details $customerID = $auth->getStorage()->read()->id; $customerManager = new Manager_Core_Customer(); $customer = $customerManager->getCustomer(Model_Core_Customer::IDENTIFIER, $customerID); $formData['title'] = $customer->getTitle(); $formData['first_name'] = $customer->getFirstName(); $formData['last_name'] = $customer->getLastName(); $formData['phone_number'] = $customer->getTelephone(Model_Core_Customer::TELEPHONE1); $formData['mobile_number'] = $customer->getTelephone(Model_Core_Customer::TELEPHONE2); $formData['email_address'] = $customer->getEmailAddress(); $formData['date_of_birth_at'] = $customer->getDateOfBirthAt(); $pageForm->populate($formData); } } if (isset($this->_quoteID) && $this->_quoteID > 0) { $quoteManager = new Manager_Insurance_LandlordsPlus_Quote($this->_quoteID); $premiums = $quoteManager->calculatePremiums(); if ($premiums != '') { $this->view->premiums = array('annual' => $premiums['totalGrossAnnualPremium'] + $premiums['totalGrossAnnualIPT'], 'monthly' => $premiums['totalGrossMonthlyPremium'] + $premiums['totalGrossMonthlyIPT']); $this->view->premiumsFull = $premiums; } $fees = $quoteManager->getFees(); $this->view->fees = $fees; switch ($stepNum) { case 1: $customerManager = new Manager_Core_Customer(); $customer = $customerManager->getCustomer(Model_Core_Customer::LEGACY_IDENTIFIER, $quoteManager->getLegacyCustomerReference()); // Populate the customer details $titleOptions = LandlordsInsuranceQuote_Form_Subforms_PersonalDetails::$titles; if (in_array($customer->getTitle(), $titleOptions)) { $formData['title'] = $customer->getTitle(); } else { $formData['title'] = "Other"; $formData['other_title'] = $customer->getTitle(); } $formData['first_name'] = $customer->getFirstName(); $formData['last_name'] = $customer->getLastName(); $formData['phone_number'] = $customer->getTelephone(Model_Core_Customer::TELEPHONE1); $formData['mobile_number'] = $customer->getTelephone(Model_Core_Customer::TELEPHONE2); $formData['email_address'] = $customer->getEmailAddress(); $dob = $customer->getDateOfBirthAt(); if (null != $dob && '0000-00-00' != $dob) { $formData['date_of_birth_at'] = Application_Core_Utilities::mysqlDateToUk($dob); } // Populate the correspondence address details $formData['cor_address_line1'] = $customer->getAddressLine(Model_Core_Customer::ADDRESSLINE1); $formData['cor_address_line2'] = $customer->getAddressLine(Model_Core_Customer::ADDRESSLINE2); $formData['cor_address_line3'] = $customer->getAddressLine(Model_Core_Customer::ADDRESSLINE3); $formData['cor_address_postcode'] = $customer->getPostcode(); $formData['country'] = $customer->getCountry(); // Populate the insured property address details $properties = $quoteManager->getProperties(); if (count($properties) > 0) { $formData['ins_address_line1'] = $properties[0]['line_1']; $formData['ins_address_line2'] = $properties[0]['line_2']; $formData['ins_address_line3'] = $properties[0]['town']; $formData['ins_address_postcode'] = $properties[0]['postcode']; $formData['owned_for'] = $properties[0]['ownership_length_id']; $formData['no_claims'] = $properties[0]['no_claims_years_id']; $formData['tenants_type'] = $properties[0]['tenant_type_id']; $formData['have_letting_agent'] = $quoteManager->getAgentSchemeNumber() != Manager_Core_Agent::filterAsn($quoteManager->getAgentSchemeNumber()) ? 'yes' : 'no'; $formData['through_letting_agent'] = $properties[0]['letting_agent_managed'] ? 'yes' : 'no'; // Check to see if this postcode is in a flood risk area - if it is then populate the exclude flood cover data // Populating this will also cause the question to be shown on the front end $landlordsRiskAreas = new Datasource_Insurance_LandlordsPlus_RiskAreas(); $riskAreas = $landlordsRiskAreas->getByPostcode($properties[0]['postcode']); if ($riskAreas['floodArea'] == '600') { $formData['exclude_flood_cover'] = $properties[0]['exclude_flood_cover'] ? 'no' : 'yes'; // Backwards true/false stuff - I'm sooo sorry :( } } // Populate agent details if one has been chosen $agentSchemeNumber = Manager_Core_Agent::filterAsn($quoteManager->getAgentSchemeNumber()); $defaultASN = $this->_params->homelet->defaultAgent; if ($formData['have_letting_agent'] == 'yes') { $agents = new Datasource_Core_Agents(); $agent = $agents->getAgent($agentSchemeNumber); $formData['letting_agent_name'] = $agent->name; $formData['letting_agent_town'] = $agent->town; $formData['letting_agent_asn'] = $agent->agentSchemeNumber; // Fix for Redmine Ref. #10511: $agentDropdown = $pageForm->subform_lettingagent->letting_agent; $agentDropdown->setMultiOptions(array($agent->agentSchemeNumber => $agent->name . ', ' . $agent->town)); $formData['letting_agent'] = $agent->agentSchemeNumber; } // Load the policy start date $startDate = $quoteManager->getStartDate(); if ($startDate != '' && $startDate != '0000-00-00') { $formData['policy_start'] = substr($startDate, 8, 2) . '/' . substr($startDate, 5, 2) . '/' . substr($startDate, 0, 4); } // If step1 has been marked complete - we can assume they said yes to the IDD question $pageSession = new Zend_Session_Namespace('landlords_insurance_quote'); if (isset($pageSession->completed[$stepNum]) && $pageSession->completed[$stepNum] == true) { $formData['idd'] = true; } // Data Protection section $customerReferenceNumber = $customer->getIdentifier(Model_Core_Customer::LEGACY_IDENTIFIER); $dpaManager = new Manager_Core_DataProtection(); $dpaItems = $dpaManager->getItems($customerReferenceNumber, Model_Core_DataProtection_ItemEntityTypes::INSURANCE); foreach ($dpaItems as $currentItem) { switch ($currentItem->constraintTypeId) { case Model_Core_DataProtection_ItemConstraintTypes::MARKETING_BY_PHONEANDPOST: if ($currentItem->isAllowed) { $formData['dpa_phone_post'] = 0; } else { $formData['dpa_phone_post'] = 1; } break; case Model_Core_DataProtection_ItemConstraintTypes::MARKETING_BY_SMSANDEMAIL: if ($currentItem->isAllowed) { $formData['dpa_sms_email'] = 0; // For Redmine Ref #8003, "Updated marketing preference questions on online quotes" } else { $formData['dpa_sms_email'] = 1; // For Redmine Ref #8003, "Updated marketing preference questions on online quotes" } break; case Model_Core_DataProtection_ItemConstraintTypes::MARKETING_BY_THIRDPARTY: if ($currentItem->isAllowed) { $formData['dpa_resale'] = 1; } else { $formData['dpa_resale'] = 0; } break; } } case 2: // If step2 has been marked complete - we can assume they said no to the questions unless // they've been set in the quote manager if (isset($pageSession->completed[$stepNum]) && $pageSession->completed[$stepNum] == true) { $formData['need_building_insurance'] = 'no'; $formData['need_contents_insurance'] = 'no'; } if ($quoteManager->hasProduct(Manager_Insurance_LandlordsPlus_Quote::BUILDING_COVER)) { $formData['need_building_insurance'] = 'yes'; $productMeta = $quoteManager->getProductMeta(Manager_Insurance_LandlordsPlus_Quote::BUILDING_COVER); $formData['building_built'] = $productMeta['build_year']; $formData['building_bedrooms'] = $productMeta['bedroom_quantity']; $formData['building_type'] = $productMeta['building_type']; $formData['building_insurance_excess'] = $productMeta['excess']; $formData['building_accidental_damage'] = $productMeta['accidental_damage']; $quote = $quoteManager->getModel(); if ((int) $productMeta['rebuild_value'] > 0) { // There's a manually entered rebuild value - need to work out if it is because they // chose £500k+ - or if it's because we don't have a dsi $premiums = $quoteManager->calculatePremiums(); if ($premiums['calculatedDSIValue'] > 0) { $formData['override_dsi'] = 1; } $formData['building_value'] = $productMeta['rebuild_value']; } } if ($quoteManager->hasProduct(Manager_Insurance_LandlordsPlus_Quote::CONTENTS_COVER) || $quoteManager->hasProduct(Manager_Insurance_LandlordsPlus_Quote::UNFURNISHED_CONTENTS_COVER)) { $formData['need_contents_insurance'] = 'yes'; if ($quoteManager->hasProduct(Manager_Insurance_LandlordsPlus_Quote::CONTENTS_COVER)) { $formData['property_furnished'] = 'yes'; $productMeta = $quoteManager->getProductMeta(Manager_Insurance_LandlordsPlus_Quote::CONTENTS_COVER); $formData['contents_amount'] = $productMeta['cover_amount']; $formData['contents_excess'] = $productMeta['excess']; $formData['contents_accidental_damage'] = $productMeta['accidental_damage']; } else { $formData['property_furnished'] = 'no'; } } break; case 3: if (isset($pageSession->completed[$stepNum]) && $pageSession->completed[$stepNum] == true) { $formData['need_emergency_assistance'] = 'no'; $formData['need_prestige_rent_guarantee'] = 'no'; $formData['need_legal_expenses'] = 'no'; $formData['need_boiler_heating'] = 'no'; } // If we have contents/buildings cover then EAS is already included for free so we can hide the form if ($quoteManager->hasProduct(Manager_Insurance_LandlordsPlus_Quote::BUILDING_COVER) || $quoteManager->hasProduct(Manager_Insurance_LandlordsPlus_Quote::CONTENTS_COVER)) { // Change the subforms view script to one that just says it's already included for free // yeah yeah.. this aint pretty :( $emergencyAssistanceForm = $pageForm->getSubForm('subform_emergencyassistance'); $emergencyAssistanceForm->setDecorators(array(array('ViewScript', array('viewScript' => 'subforms/emergency-assistance-free.phtml')))); if ($quoteManager->hasProduct(Manager_Insurance_LandlordsPlus_Quote::BOILER_HEATING)) { $formData['need_boiler_heating'] = 'yes'; } } else { // We can allow stand-alone EAS - so we hide the boiler and heating section // yes... this is waaay too complex... I know :( $pageForm->removeSubForm('subform_boilerheating'); if ($quoteManager->hasProduct(Manager_Insurance_LandlordsPlus_Quote::EMERGENCY_ASSISTANCE)) { $formData['need_emergency_assistance'] = 'yes'; } } if ($quoteManager->hasProduct(Manager_Insurance_LandlordsPlus_Quote::RENT_GUARANTEE)) { $formData['need_prestige_rent_guarantee'] = 'yes'; $productMeta = $quoteManager->getProductMeta(Manager_Insurance_LandlordsPlus_Quote::RENT_GUARANTEE); $formData['rent_amount'] = $productMeta['monthly_rent']; } elseif ($quoteManager->hasProduct(Manager_Insurance_LandlordsPlus_Quote::LEGAL_EXPENSES)) { $formData['need_legal_expenses'] = 'yes'; } break; case 4: if (isset($pageSession->completed[$stepNum]) && $pageSession->completed[$stepNum] == true) { // Load underwriting answers from the database as they've already been answered $answersManager = new Manager_Insurance_Answers(); $quote = $quoteManager->getModel(); $policyNumber = $quote->legacyID; $customerReferenceNumber = $quote->legacyCustomerID; $answers = $answersManager->getUnderwritingAnswers($policyNumber); foreach ($answers as $answer) { switch ($answer->getQuestionNumber()) { case '53': $formData['declaration1'] = $answer->getAnswer(); break; case '54': $formData['declaration2'] = $answer->getAnswer(); break; case '55': $formData['declaration2b'] = $answer->getAnswer(); break; case '56': $formData['declaration2c'] = $answer->getAnswer(); break; case '57': $formData['declaration2d'] = $answer->getAnswer(); break; case '58': $formData['declaration3'] = $answer->getAnswer(); break; case '59': $formData['declaration4'] = $answer->getAnswer(); break; case '60': $formData['declaration6'] = $answer->getAnswer(); break; case '61': $formData['declaration7'] = $answer->getAnswer(); break; case '62': $formData['declaration8'] = $answer->getAnswer(); break; case '63': $formData['declaration9'] = $answer->getAnswer(); break; case '64': $formData['declaration10'] = $answer->getAnswer(); break; } } // Also need to see if they said yes or no to bank interest on the propery… $bankInterestManager = new Manager_Insurance_LegacyBankInterest(); $bankInterestArray = $bankInterestManager->getAllInterests($policyNumber, $customerReferenceNumber); $model = array(); if (!empty($bankInterestArray)) { $formData['declaration11'] = 'yes'; } else { $formData['declaration11'] = 'no'; } // They must have agreed to the declaration or they wouldn't have been able to continue $formData['declaration_confirmation'] = 'yes'; } break; case 5: // Payment Selection section if (isset($pageSession->paymentSelectionDetails) && is_array($pageSession->paymentSelectionDetails)) { $formData = $pageSession->paymentSelectionDetails; } break; } } $pageForm->populate($formData); return true; }