/** * Controller for the direct debit payment page * * @return void * * array('sort' => '938611', 'acct' => '07806039', 'assert' => 'true'), */ public function ddAction() { $pageForm = new TenantsInsuranceQuoteB_Form_DirectDebit(); $pageSession = new Zend_Session_Namespace('tenants_insurance_quote'); // Tell page NOT to use AJAX validation as we go $this->view->headScript()->appendScript('var ajaxValidate = true; var ajaxValidatePage = \'dd\';'); if ($this->getRequest()->isPost()) { $valid = $this->_formStepCommonValidate($pageForm, 'dd'); if ($valid && isset($_POST['dd_confirm'])) { // Form is valid and the user has confirmed the bank branch details $pageSession->completed['dd'] = true; // Mark page as valid, so user can progress // Save the direct debit details and redirect to confirmation page $formData = $pageForm->getValues(); $ddData = new Model_Core_Directdebit(); $ddData->refNo = $this->_customerReferenceNumber; $ddData->policyNumber = $this->_policyNumber; $ddData->accountName = $formData["subform_directdebit"]["dd_accountname"]; $ddData->accountNumber = $formData["subform_directdebit"]["bank_account_number"]; $ddData->sortCode = preg_replace('/-/', '', $formData["subform_directdebit"]["bank_sortcode_number"]); $quote = new Manager_Insurance_TenantsContentsPlus_Quote(null, null, $this->_policyNumber); $startDate = $quote->getStartDate(); $firstPayMonth = date("Y-m-d", strtotime("{$startDate} + 1 month")); $ddData->paymentDate = $firstPayMonth; $ddData->paymentFrequency = ucfirst(strtolower($quote->getPayBy())); // Create the Manage Object $ddPayment = new Manager_Core_Directdebit(); // Save the stuffs $ddPayment->save($ddData); $this->_formStepCommonNavigate('dd'); return; } elseif ($valid && !isset($_POST['dd_confirm'])) { // Form data is valid but they haven't confirmed their branch details $formData = $pageForm->getValues(); // Switch the form to the confirmation form (essentially the same but with hidden fields) $pageForm = new TenantsInsuranceQuoteB_Form_BankConfirmation(); // Populate the confirmation form with the data from the main DD form and also fill in the branch details // This is to show the bank branch details in the confirmation screen $bankManager = new Manager_Core_Bank(); $this->view->branchDetails = $bankManager->getBranchDetail($_POST['bank_sortcode_number']); $formData['subform_directdebit']['dd_confirm'] = "yes"; // The form data is in the wrong subform now because we want to use the confirmation form // so we have to switch the key over $formData['subform_bankconfirmation'] = $formData['subform_directdebit']; unset($formData['subform_directdebit']); $pageForm->populate($formData); } if (isset($_POST['back'])) { $this->_formStepCommonNavigate('dd'); return; } } // Load the element data from the database if we can if ($this->_formStepCommonPopulate($pageForm, 'dd')) { // Render the page unless we have been redirected $this->view->form = $pageForm; $this->render('step'); } }
/** * Controller for the direct debit payment page * * @return void */ public function ddAction() { $pageForm = new LandlordsInsuranceQuote_Form_BankConfirmation(); $pageSession = new Zend_Session_Namespace('landlords_insurance_quote'); // Tell page NOT to use AJAX validation as we go $this->view->headScript()->appendScript('var ajaxValidate = false; var ajaxValidatePage = \'dd\';'); // Look up bank details to show in view $bankManager = new Manager_Core_Bank(); $this->view->branchDetails = $bankManager->getBranchDetail($pageSession->paymentSelectionDetails['bank_sortcode_number']); // Drop the branch address lines into an array for accessing on the // front-end. $this->view->branchLines = array($this->view->branchDetails->bankNameFull, $this->view->branchDetails->addressLine1, $this->view->branchDetails->addressLine2, $this->view->branchDetails->addressLine3, $this->view->branchDetails->addressLine4, $this->view->branchDetails->town, $this->view->branchDetails->county, $this->view->branchDetails->postCode); if ($this->getRequest()->isPost()) { $valid = $this->_formStepCommonValidate($pageForm, 'dd'); if ($valid && isset($_POST['next'])) { // Form is valid and the user has confirmed the bank branch details $pageSession->completed['dd'] = true; // Mark page as valid, so user can progress $quoteManager = new Manager_Insurance_LandlordsPlus_Quote($this->_quoteID); // Save the direct debit details and redirect to confirmation page $ddData = new Model_Core_Directdebit(); $ddData->refNo = $this->_customerReferenceNumber; $ddData->policyNumber = $quoteManager->getPolicyNumber(); $ddData->accountName = $pageSession->paymentSelectionDetails['dd_accountname']; $ddData->accountNumber = $pageSession->paymentSelectionDetails['bank_account_number']; $ddData->sortCode = str_replace('-', '', $pageSession->paymentSelectionDetails['bank_sortcode_number']); $startDate = $quoteManager->getStartDate(); $firstPayMonth = date('Y-m-d', strtotime("{$startDate} + 1 month")); $ddData->paymentDate = $firstPayMonth; $ddData->paymentFrequency = ucfirst(strtolower($quoteManager->getPayBy())); // Instantiate a DD manager $ddPayment = new Manager_Core_Directdebit(); // Save the stuffs $ddPayment->save($ddData); $this->_formStepCommonNavigate('dd'); return; } if (isset($_POST['back'])) { $this->_formStepCommonNavigate('dd'); return; } } // Load the element data from the database if we can if ($this->_formStepCommonPopulate($pageForm, 'dd')) { // Render the page unless we have been redirected $this->view->form = $pageForm; $this->view->stepNum = 'dd'; $this->render('step'); } }