/** * Accept the RRP Quote * * @return array */ public function rentRecoveryPlusAcceptAction() { $request = $this->getSymfonyRequest(); $quoteNumber = null; if ($request->isMethod('POST')) { $quoteNumber = $request->request->get('policyNumber'); } else { if ($request->isMethod('GET')) { $quoteNumber = $request->query->get('policyNumber'); } } if ($quoteNumber) { $applicationDecoratorClass = $this->getContainer()->get('rrp.application.decorator.class'); /** @var RRP\Application\Decorators\RentRecoveryPlusQuote $quote */ $quote = $applicationDecoratorClass::getDecorator('RentRecoveryPlusQuote'); if ($quote->populateByPolicyNumber($quoteNumber)) { $referred = false; if ($quote->getAppData()->getPayStatus() == Model_Insurance_RentRecoveryPlus_LegacyPolicy::PAY_STATUS_REFERRED) { $referred = true; } else { $policyOptionsManagerClass = $this->getContainer()->get('rrp.utility.policy_options_manager.class'); $propertyRental = $policyOptionsManagerClass::getOption($quote->getAppData()->getPolicyOptions(), Model_Insurance_RentRecoveryPlus_LegacyPolicy::POLICY_OPTION_RRP, $quote->getAppData()->getAmountsCovered()); // Does the given reference satisfy the policy criteria? $application = $quote->getApplicationData($quoteNumber); $reference = $this->getReferenceFromSession($application->getReferenceNumber()); $referenceSatisfiesCriteria = $this->referenceSatisfiesCriteria($reference); $this->referralModel->setFromRrpPolicy($quote, $propertyRental); $applicationSatisfiesCriteria = $this->applicationSatisfiesCriteria(); if (!$referenceSatisfiesCriteria || !$applicationSatisfiesCriteria) { // Need to set the policy number on the referral object so that listeners can access it for whatever reason. $this->referralModel->setPolicyNumber($quoteNumber); // Fire a POLICY_REFERRED event to handle all referral related actions. $referredEvent = new ReferredEvent($this->referralModel); $this->eventDispatcher->dispatch(RRPEvents::POLICY_REFERRED, $referredEvent); // Mark this application as referred. $quote->getAppData()->setPayStatus(Model_Insurance_RentRecoveryPlus_LegacyPolicy::PAY_STATUS_REFERRED); $quote->save(); $referred = true; } } if ($referred) { return $this->renderTwigView('/rentguarantee/rent-recovery-plus-referral.html.twig', array('policyNumber' => $quoteNumber)); } if ($this->_params->connect->settings->rentRecoveryPlus->manualReferenceCheck) { $quote->getAppData()->setPayStatus(Model_Insurance_RentRecoveryPlus_LegacyPolicy::PAY_STATUS_REFERRED); $quote->save(); $policyNote = new Datasource_Insurance_PolicyNotes(); $note = "Policy incepted by agent, passed to RG team to validate reference and place on risk."; $policyNote->addNote($quoteNumber, $note); // Send referral email $subject = str_replace('{$policyNumber}', $quoteNumber, $this->_params->connect->settings->rentRecoveryPlus->referral->emailSubject); $message = $this->getContainer()->get('twig')->render('rent-recovery-plus-manual-reference-mail.plain.twig', array('agentName' => $this->_agentObj->name, 'agentSchemeNumber' => $this->_agentSchemeNumber)); $mailManager = new Application_Core_Mail(); $mailManager->setTo($this->_params->connect->settings->rentRecoveryPlus->referral->emailToAddress, $this->_params->connect->settings->rentRecoveryPlus->referral->emailToName)->setFrom($this->_params->connect->settings->rentRecoveryPlus->referral->emailFromAddress, $this->_params->connect->settings->rentRecoveryPlus->referral->emailFromName)->setSubject($subject)->setBodyText($message); $mailManager->send(); return $this->renderTwigView('/rentguarantee/rent-recovery-plus-manual-reference.html.twig', array('policyNumber' => $quoteNumber)); } $policyNumber = $quote->acceptQuote($quoteNumber); if (!$policyNumber) { $subject = str_replace('{$policyNumber}', $policyNumber, $this->_params->connect->settings->rentRecoveryPlus->referral->emailSubject); $message = $this->getContainer()->get('twig')->render('rent-recovery-plus-error-mail.plain.twig', array('agentName' => $this->_agentObj->name, 'agentSchemeNumber' => $this->_agentSchemeNumber, 'dateEntered' => date('Y-m-d H:i:s'), 'policyNumber' => $policyNumber)); $mailManager = new Application_Core_Mail(); $mailManager->setTo($this->_params->connect->settings->rentRecoveryPlus->referral->emailToAddress, $this->_params->connect->settings->rentRecoveryPlus->referral->emailToName)->setFrom($this->_params->connect->settings->rentRecoveryPlus->referral->emailFromAddress, $this->_params->connect->settings->rentRecoveryPlus->referral->emailFromName)->setSubject($subject)->setBodyText($message); $mailManager->send(); $this->renderTwigView('/rentguarantee/rent-recovery-plus-error.html.twig'); } else { Manager_Insurance_Quote::sendInception($policyNumber, null, null, $this->_params->connect->settings->rentRecoveryPlus->systemCsuID); return $this->renderTwigView('/rentguarantee/rent-recovery-plus-confirmation.html.twig', array('policyNumber' => $policyNumber, 'emailQueryAddress' => $this->_params->connect->settings->rentRecoveryPlus->queryEmailAddress)); } } } $this->renderTwigView('/rentguarantee/rent-recovery-plus-error.html.twig'); }