/**
  *Step 5 Action
  * @param
  * @return
  * @author John Burrin
  * @since
  */
 public function step5Action()
 {
     $pageSession = new Zend_Session_Namespace('portfolio_insurance_quote');
     $pageForm = new Form_PortfolioInsuranceQuote_Step5();
     if ($this->_formStepCommonPopulate($pageForm, 5)) {
         $quoteManager = new Manager_Insurance_Portfolio_Quote();
         $quoteData = $quoteManager->quote($this->_customerReferenceNumber);
         $this->_doMail($quoteData);
         // Want to capture all the data and shove it all the old tables (Muntify)
         $quoteManager->convertLegacy($this->_customerReferenceNumber);
         //Update the WebLead summary and create a STEP4 blob.
         $webLeadManager = new Manager_Core_WebLead();
         $webLeadSummary = $webLeadManager->getSummary($pageSession->webLeadSummaryId);
         $webLeadSummary->lastUpdatedTime = $this->_offsetDate();
         $webLeadManager->updateSummary($webLeadSummary);
         //Determine if a new STEP5 blob needs to be created, or an existing one retrieved.
         if ($webLeadManager->getBlobExists($webLeadSummary->webLeadSummaryId, Model_Core_WebLeadStep::STEP5)) {
             $webLeadBlob = $webLeadManager->getBlob($webLeadSummary->webLeadSummaryId, Model_Core_WebLeadStep::STEP5);
         } else {
             $webLeadBlob = $webLeadManager->createNewBlob($webLeadSummary->webLeadSummaryId, Model_Core_WebLeadStep::STEP5);
         }
         //Update the blob and store
         $webLeadBlob->blob = Zend_Json::encode($_POST);
         $webLeadBlob->blobChecksum = crc32($webLeadBlob->blob);
         $webLeadManager->updateBlob($webLeadBlob);
         if ($quoteData['referred'] == true) {
             $this->_helper->redirector->gotoUrl('/portfolio/insurance-quote/referred');
         } else {
             $this->_helper->redirector->gotoUrl('/portfolio/insurance-quote/complete');
         }
         exit;
     }
 }
 public function step4Action()
 {
     $pageForm = new LandlordsInsuranceQuote_Form_Step4();
     // Tell page to use AJAX validation as we go
     $this->view->headScript()->appendScript('var ajaxValidate = true; var ajaxValidatePage = 4;');
     // Check to make sure the user has actually added a product - if they haven't stop them going forward
     $session = new Zend_Session_Namespace('landlords_insurance_quote');
     $quoteManager = new Manager_Insurance_LandlordsPlus_Quote($session->quoteID);
     if ($quoteManager->productCount() == 0 && !isset($_POST['back'])) {
         $this->view->stepNum = "no-product";
         // AJD - Not happy about this, but it's the way HLF was built.
         $quoteManager = new Manager_Insurance_LandlordsPlus_Quote($session->quoteID);
         $policyNumber = $quoteManager->getLegacyID();
         $this->view->quoteID = $policyNumber;
         $this->render('no-cover-selected');
         return;
     } elseif ($quoteManager->productCount() == 0 && isset($_POST['back'])) {
         // No products/options selected, send them back to step 2
         $this->_helper->redirector->gotoUrl('/landlords/insurance-quote/step2');
         return;
     } elseif ($this->getRequest()->isPost()) {
         // We need to validate and save the data
         $valid = $this->_formStepCommonValidate($pageForm, 4);
         if ($valid) {
             //Update the WebLead summary and create a STEP4 blob.
             $session = new Zend_Session_Namespace('landlords_insurance_quote');
             $webLeadManager = new Manager_Core_WebLead();
             $webLeadSummary = $webLeadManager->getSummary($session->webLeadSummaryId);
             $webLeadSummary->lastUpdatedTime = $this->_offsetDate();
             $webLeadManager->updateSummary($webLeadSummary);
             //Determine if a new STEP4 blob needs to be created, or an existing one retrieved.
             if ($webLeadManager->getBlobExists($webLeadSummary->webLeadSummaryId, Model_Core_WebLeadStep::STEP4)) {
                 $webLeadBlob = $webLeadManager->getBlob($webLeadSummary->webLeadSummaryId, Model_Core_WebLeadStep::STEP4);
             } else {
                 $webLeadBlob = $webLeadManager->createNewBlob($webLeadSummary->webLeadSummaryId, Model_Core_WebLeadStep::STEP4);
             }
             //Update the blob and store
             $webLeadBlob->blob = Zend_Json::encode($_POST);
             $webLeadBlob->blobChecksum = crc32($webLeadBlob->blob);
             $webLeadManager->updateBlob($webLeadBlob);
             //Store the underwriting datas not already stored.
             $pageForm->applyAnswersLogics();
             $pageForm->applyAdditionalInformationLogics();
             $endorsementManager = new Manager_Insurance_LandlordsPlus_Endorsement();
             $endorsements = $endorsementManager->getEndorsementsRequired($session->quoteID);
             //Look for a flood endorsement, and if found, identify if it is applicable (the
             //customer may have chosen to pay a premium to cover flood).
             $finalEndorsementArray = array();
             foreach ($endorsements as $currentEndorsement) {
                 if ($currentEndorsement->getEndorsementType()->getName() == Model_Insurance_EndorsementTypes::FLOOD_EXCLUSION) {
                     $quoteManager = new Manager_Insurance_LandlordsPlus_Quote($session->quoteID);
                     $propertiesArray = $quoteManager->getProperties();
                     if ($propertiesArray[0]['exclude_flood_cover'] == 0) {
                         //Flood cover IS provided, which means the endorsement is not applicable.
                         continue;
                     }
                 }
                 if ($endorsementManager->getIsEndorsementAlreadyApplied($currentEndorsement)) {
                     //No need to add the endorsement again...
                     continue;
                 }
                 $finalEndorsementArray[] = $currentEndorsement;
             }
             if (count($finalEndorsementArray) > 0) {
                 $endorsementManager->insertEndorsements($finalEndorsementArray);
             }
             //Execute the underwriting referral logics.
             $referralManager = new Manager_Insurance_LandlordsPlus_Referral();
             $reasons = $referralManager->getReferralReasons($session->quoteID);
             if (!empty($reasons)) {
                 // Notify Underwriting of the referral.
                 $quoteManager = new Manager_Insurance_LandlordsPlus_Quote($session->quoteID);
                 $policyNumber = $quoteManager->getLegacyID();
                 $refNo = $quoteManager->getLegacyCustomerReference();
                 $notificationManager = new Manager_Core_Notification();
                 $notesManager = new Manager_Core_Notes();
                 $otherReason = '';
                 for ($i = 0; $i < count($reasons); $i++) {
                     if ('Referral due to buildings type' === $reasons[$i]) {
                         $otherReason = "Policy has been referred due to property type of Other.";
                         break;
                     }
                 }
                 if ($otherReason) {
                     $notesManager->save($policyNumber, "Refer to UW - " . $otherReason);
                     $notificationManager->_reason = "Other";
                 } else {
                     $notesManager->save($policyNumber, "Refer to UW - The application has fallen outside UW criteria.");
                 }
                 $notificationManager->notifyUnderwriting($policyNumber, $refNo);
                 $referralManager->setToRefer($session->quoteID);
                 //Redirect to referredAction.
                 $this->_helper->redirector->gotoUrl('/landlords/insurance-quote/referred');
                 return;
             }
             // Everything has been saved ok so navigate to next step
             $this->_formStepCommonNavigate(4);
             return;
         } elseif (isset($_POST['back'])) {
             $this->_formStepCommonNavigate(4);
             return;
         }
     }
     // If there's no quote manager, then set it up so we can make use of the
     // QHLI in the templates.
     if (!isset($quoteManager)) {
         $quoteManager = new Manager_Insurance_LandlordsPlus_Quote($session->quoteID);
     }
     $this->view->qhli = $quoteManager->getLegacyID();
     // Load the element data from the database if we can
     if ($this->_formStepCommonPopulate($pageForm, 4)) {
         // Render the page unless we have been redirected
         $this->view->form = $pageForm;
         $this->render('step');
     }
 }
 /**
  * Validates the underwriting state, then proceeds to the Step 4 form.
  *
  * Long desc.
  *
  * Populate this step with the underwriting
  */
 public function step4Action()
 {
     $pageForm = new TenantsInsuranceQuoteB_Form_Step4();
     // Tell page to use AJAX validation as we go
     $this->view->headScript()->appendScript('var ajaxValidate = true; var ajaxValidatePage = 4;');
     /*
     			Moved this here as the validation and advance to next page was being processed before back
     			therefore a back on a valid page went forward
     */
     if (isset($_POST['back'])) {
         $this->_formStepCommonNavigate(4);
         return;
     }
     if ($this->getRequest()->isPost()) {
         $valid = $this->_formStepCommonValidate($pageForm, 4);
         if ($valid) {
             //Update the WebLead summary and create a STEP4 blob.
             $webLeadManager = new Manager_Core_WebLead();
             $webLeadSummary = $webLeadManager->getSummary($this->_webLeadSummaryId);
             $webLeadSummary->lastUpdatedTime = $this->_offsetDate();
             $webLeadManager->updateSummary($webLeadSummary);
             //Determine if a new STEP4 blob needs to be created, or an existing one retrieved.
             if ($webLeadManager->getBlobExists($this->_webLeadSummaryId, Model_Core_WebLeadStep::STEP4)) {
                 $webLeadBlob = $webLeadManager->getBlob($webLeadSummary->webLeadSummaryId, Model_Core_WebLeadStep::STEP4);
             } else {
                 $webLeadBlob = $webLeadManager->createNewBlob($webLeadSummary->webLeadSummaryId, Model_Core_WebLeadStep::STEP4);
             }
             //Update the blob and store
             $webLeadBlob->blob = Zend_Json::encode($_POST);
             $webLeadBlob->blobChecksum = crc32($webLeadBlob->blob);
             $webLeadManager->updateBlob($webLeadBlob);
             //Specialized validation of the underwriting inputs.
             $proceed = $this->_processUnderwriting($pageForm);
             if (!$proceed) {
                 //If the quote has been referred, do nothing further.
                 // Redirect the browser to the quote referred page
                 $this->_helper->redirector->gotoUrl('/tenants/insurance-quote-b/referred');
                 return;
             }
             // Everything has been saved ok so navigate to next step
             $this->_formStepCommonNavigate(4);
             return;
         }
     }
     // Load the element data from the database if we can
     if ($this->_formStepCommonPopulate($pageForm, 4)) {
         // Render the page unless we have been redirected
         $this->view->form = $pageForm;
         $this->render('step');
     }
 }
 /**
  * Initialise the step 3 form [Important Information Form]
  *
  * @return void
  */
 public function step3Action()
 {
     // First of all check that this form should be viewable and the user isn't trying to skip ahead
     // This step has the check explicitly early otherwise it can fall over with trying to invoke the customer
     //   manager etc
     if (!$this->checkPageAccessAllowed(3)) {
         return false;
     }
     $pageForm = new TenantsInsuranceQuote_Form_Step3();
     // Tell page to use AJAX validation as we go
     $this->view->headScript()->appendScript('var ajaxValidate = true; var ajaxValidatePage = 3;');
     //Update the WebLead summary and create a STEP3 blob.
     $webLeadManager = new Manager_Core_WebLead();
     $webLeadSummary = $webLeadManager->getSummary($this->_webLeadSummaryId);
     $this->view->qhli = $webLeadSummary->quoteNumber;
     if ($this->getRequest()->isPost()) {
         $valid = $this->_formStepCommonValidate($pageForm, 3);
         if ($valid) {
             $pageSession = new Zend_Session_Namespace('tenants_insurance_quote');
             $pageSession->IsNewCustomer = false;
             $data = $pageForm->getValues();
             $webLeadSummary->lastUpdatedTime = $this->_offsetDate();
             $webLeadSummary->promotionCode = $data["subform_howhear"]['campaign_code'];
             $webLeadManager->updateSummary($webLeadSummary);
             //Determine if a new STEP3 blob needs to be created, or an existing one retrieved.
             if ($webLeadManager->getBlobExists($this->_webLeadSummaryId, Model_Core_WebLeadStep::STEP3)) {
                 $webLeadBlob = $webLeadManager->getBlob($webLeadSummary->webLeadSummaryId, Model_Core_WebLeadStep::STEP3);
             } else {
                 $webLeadBlob = $webLeadManager->createNewBlob($webLeadSummary->webLeadSummaryId, Model_Core_WebLeadStep::STEP3);
             }
             //Update the blob and store
             $webLeadBlob->blob = Zend_Json::encode($_POST);
             $webLeadBlob->blobChecksum = crc32($webLeadBlob->blob);
             $webLeadManager->updateBlob($webLeadBlob);
             //Specialized validation of the underwriting inputs.
             $proceed = $this->_processUnderwriting($pageForm);
             if (!$proceed) {
                 //If the quote has been referred, do nothing further.
                 // Redirect the browser to the quote referred page
                 $this->_helper->redirector->gotoUrl('/tenants/insurance-quote/referred');
                 return;
             }
             // Save MI information - how did you hear about us
             $marketQuestion = new Manager_Core_ManagementInformation();
             $marketQuestion->saveMarketingAnswers($this->_policyNumber, $this->_customerReferenceNumber, $data["subform_howhear"]["how_hear"]);
             // Everything has been saved OK so navigate to next step
             $this->_formStepCommonNavigate(3);
             return;
         } elseif (isset($_POST['back'])) {
             $this->_formStepCommonNavigate(3);
             return;
         }
     }
     // Load the element data from the database if we can
     if ($this->_formStepCommonPopulate($pageForm, 3)) {
         // Render the page unless we have been redirected
         $this->view->form = $pageForm;
         $this->render('step');
     }
 }