public function isValid($formData = array())
 {
     if (isset($formData['ins_property_postcode']) && trim($formData['ins_property_postcode']) != '') {
         $postcode = trim($formData['ins_property_postcode']);
         $postcodeLookup = new Manager_Core_Postcode();
         $addresses = $postcodeLookup->getPropertiesByPostcode(preg_replace('/[^\\w\\ ]/', '', $postcode));
         $addressList = array('' => '--- please select ---');
         if (isset($postcode) && preg_match('/^IM|^GY|^JE/i', $postcode)) {
             return;
         } else {
             foreach ($addresses as $address) {
                 $addressList[$address['id']] = $address['singleLineWithoutPostcode'];
             }
         }
         $ins_address = $this->getElement('property_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);
     }
     // If a value for an address lookup is present, the house name or number is not required
     if (isset($formData['ins_property_postcode'])) {
         $this->getElement('property_number_name')->setRequired(false);
     }
     return parent::isValid($formData);
 }
예제 #2
0
 public function isValid($postData)
 {
     $pageSession = new Zend_Session_Namespace('portfolio_insurance_quote');
     $customerReferenceNumber = $pageSession->CustomerRefNo;
     $propertyManager = new Manager_Insurance_Portfolio_Property();
     $propertyObjects = $propertyManager->fetchAllProperties($customerReferenceNumber);
     $propertyArray = $propertyObjects->toArray();
     $optionList = array('' => '--- please select ---');
     foreach ($propertyArray as $property) {
         $optionList[$property['id']] = $property['address1'] . " " . $property['address2'] . " " . $property['address3'] . " " . $property['postcode'];
     }
     // Get the subfoem element for property address that the bank may have interest in
     $propertyAddressSelect = $this->getElement('claim_property');
     $propertyAddressSelect->setMultiOptions($optionList);
     $validator = new Zend_Validate_InArray(array('haystack' => array_keys($optionList)));
     $validator->setMessages(array(Zend_Validate_InArray::NOT_IN_ARRAY => 'Not in list'));
     $propertyAddressSelect->addValidator($validator, true);
     // Set the selected to 0
     $propertyAddressSelect->setValue('0');
     $claimTypeList = array('' => '--- please select ---');
     $claimTypesSelect = $this->getElement('claim_type');
     $claimTypes = new Datasource_Insurance_PreviousClaimTypes();
     $claimTypeObjects = $claimTypes->getPreviousClaimTypes(Model_Insurance_ProductNames::LANDLORDSPLUS);
     foreach ($claimTypeObjects as $ClaimType) {
         $claimTypeList[$ClaimType->getClaimTypeID()] = $ClaimType->getClaimTypeText();
     }
     $claimTypesSelect->setMultiOptions($claimTypeList);
     return parent::isValid($postData);
 }
 /**
  * Overridden isValid() method for pre-validation code
  *
  * @param array $formData data typically from a POST or GET request
  *
  * @return bool
  */
 public function isValid($formData = array())
 {
     $pageSession = new Zend_Session_Namespace('tenants_insurance_quote');
     // If correspondence address is set to be the same as insured address, copy the address values across
     if (isset($formData['cor_same_address']) && $formData['cor_same_address'] == 'yes') {
         // NOTE: THIS BIT OF CODE MEANS BOTH ADDRESS SUBFORMS MUST APPEAR ON THE SAME PAGE
         $formData['cor_house_number_name'] = $formData['ins_house_number_name'];
         $formData['cor_postcode'] = $formData['ins_postcode'];
         $formData['cor_address'] = $formData['ins_address'];
         $findPostcode = $formData['ins_postcode'];
     }
     // If a postcode is present, look it up and populate the allowed values of the associated dropdown
     if (isset($formData['cor_postcode']) && trim($formData['cor_postcode']) != '') {
         $postcode = trim($formData['cor_postcode']);
         $postcodeLookup = new Manager_Core_Postcode();
         $addresses = $postcodeLookup->getPropertiesByPostcode(preg_replace('/[^\\w\\ ]/', '', $postcode));
         $addressList = array('' => '--- please select ---');
         foreach ($addresses as $address) {
             $addressList[$address['id']] = $address['singleLineWithoutPostcode'];
         }
         $cor_address = $this->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 => 'Correspondence address does not match with postcode'));
         $cor_address->addValidator($validator, true);
     }
     // If a value for an address lookup is present, the house name or number is not required
     if (isset($formData['cor_postcode'])) {
         $this->getElement('cor_house_number_name')->setRequired(false);
     }
     // Call original isValid()
     return parent::isValid($formData);
 }
예제 #4
0
 public function init()
 {
     $seccion = new Application_Model_Seccion();
     $array = $seccion->listarSeccionesPeriodoActualActivos();
     $include = new Application_Model_Includes();
     //$q2a=$include->query2array($array, 'iSeccIdSeccion','vSeccDescripcion');
     $q2a = $include->querytoeach($array, "iSeccIdSeccion");
     $validator = new Zend_Validate_InArray($q2a);
     $validator->setHaystack($q2a);
     $validator->setMessages(array(Zend_Validate_InArray::NOT_IN_ARRAY => 'Eliga una sección'));
     $this->setAction('/admin/agregarcurso')->setMethod('post')->setAttrib('id', 'formLogin');
     // Crea un y configura el elemento username
     $nombrecurso = $this->createElement('text', 'nombrecurso', array('label' => 'Nombre del Curso', 'placeholder' => 'Máximo 150 caracteres'));
     $nombrecurso->addValidator('notEmpty', true, array('messages' => array('isEmpty' => 'Campo requerido')))->addValidator('regex', true, array('pattern' => '/^[(a-z A-Z)]+$/', 'messages' => array('regexNotMatch' => 'Sólo Letras')))->addValidator('stringLength', false, array(5, 150, 'messages' => "Entre 5 a 150 caracteres"))->setRequired(true)->addFilter('StringToUpper');
     $nombrecurso->setDecorators(array('ViewHelper', 'Description', 'Errors', array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div')), array(array('td' => 'HtmlTag'), array('tag' => 'td')), array('Label', array('tag' => 'td'))));
     $descripcion = $this->createElement('text', 'descripcion', array('label' => 'Descripción', 'placeholder' => 'Breve descripción del curso'));
     $descripcion->addValidator('notEmpty', true, array('messages' => array('isEmpty' => 'Campo requerido')))->addValidator('regex', true, array('pattern' => '/^[(a-z A-Z 0-9)]+$/', 'messages' => array('regexNotMatch' => 'Sólo Letras')))->setRequired(true)->addFilter('StringToUpper');
     $descripcion->setDecorators(array('ViewHelper', 'Description', 'Errors', array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div')), array(array('td' => 'HtmlTag'), array('tag' => 'td')), array('Label', array('tag' => 'td'))));
     $gradosactuales = new Application_Model_Grado();
     $includes = new Application_Model_Includes();
     $arraygrados = $gradosactuales->listarGradosActivos();
     $arraygradostoarray = $includes->query2array($arraygrados, 'iGradoIdGrado', 'vGradoDescripcion');
     $grado = $this->createElement('select', 'cbogrado', array('label' => 'Grado', 'autocomplete' => false, 'multiOptions' => $arraygradostoarray, 'onChange' => 'cargarseccion();'));
     $grado->setDecorators(array('ViewHelper', 'Description', 'Errors', array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div')), array(array('td' => 'HtmlTag'), array('tag' => 'td')), array('Label', array('tag' => 'td'))));
     $seccion = $this->createElement('select', 'cboseccion', array('label' => 'Seccion', 'multiOptions' => array("0" => "Seleccionar Sección")));
     $seccion->addValidator($validator);
     $seccion->addValidator('notEmpty', true, array('messages' => array('isEmpty' => 'Campo requerido')));
     $seccion->setDecorators(array('ViewHelper', 'Description', 'Errors', array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div')), array(array('td' => 'HtmlTag'), array('tag' => 'td')), array('Label', array('tag' => 'td'))));
     // Añade los elementos al formulario:
     $this->addElement($nombrecurso)->addElement($descripcion)->addElement($grado)->addElement($seccion)->addElement('submit', 'registrar', array('label' => 'Registrar'));
 }
예제 #5
0
 public function isValid($formData = array())
 {
     // If a postcode is present, look it up and populate the allowed values of the associated dropdown
     if (isset($formData['postcode']) && trim($formData['postcode']) != '') {
         $postcode = trim($formData['postcode']);
         $postcodeLookup = new Manager_Core_Postcode();
         $addresses = $postcodeLookup->getPropertiesByPostcode(preg_replace('/[^\\w\\ ]/', '', $postcode));
         $addressList = array('' => '--- please select ---');
         foreach ($addresses as $address) {
             $addressList[$address['id']] = $address['singleLineWithoutPostcode'];
         }
         $address = $this->getElement('address');
         $address->setMultiOptions($addressList);
         $validator = new Zend_Validate_InArray(array('haystack' => array_keys($addressList)));
         $validator->setMessages(array(Zend_Validate_InArray::NOT_IN_ARRAY => 'Address does not match with postcode'));
         $address->addValidator($validator, true);
     }
     // If a value for an address lookup is present, the house name or number is not required
     if (isset($formData['address_postcode']) && $formData['address_postcode'] != '') {
         $this->getElement('postcode')->setRequired(false);
         $this->getElement('address')->setRequired(false);
     }
     // Call original isValid()
     return parent::isValid($formData);
 }
 public function isValid($postData)
 {
     $pageSession = new Zend_Session_Namespace('portfolio_insurance_quote');
     $customerReferenceNumber = $pageSession->CustomerRefNo;
     $propertyManager = new Manager_Insurance_Portfolio_Property();
     $propertyObjects = $propertyManager->fetchAllProperties($customerReferenceNumber);
     $propertyArray = $propertyObjects->toArray();
     $optionList = array('' => '--- please select ---');
     foreach ($propertyArray as $property) {
         $optionList[$property['id']] = $property['address1'] . " " . $property['address2'] . " " . $property['address3'] . " " . $property['postcode'];
     }
     // Get the subfoem element for property address that the bank may have interest in
     $propertyAddressSelect = $this->getElement('bank_property');
     $propertyAddressSelect->setMultiOptions($optionList);
     $validator = new Zend_Validate_InArray(array('haystack' => array_keys($optionList)));
     $validator->setMessages(array(Zend_Validate_InArray::NOT_IN_ARRAY => 'Property not in list'));
     $propertyAddressSelect->addValidator($validator, true);
     return parent::isValid($postData);
 }
 /**
  * Overridden isValid() method for pre-validation code
  *
  * @param array $formData data typically from a POST or GET request
  *
  * @return bool
  */
 public function isValid($formData = array())
 {
     $pageSession = new Zend_Session_Namespace('landlords_insurance_quote');
     // If a postcode is present, look it up and populate the allowed values of the associated dropdown
     if (isset($formData['cor_postcode']) && trim($formData['cor_postcode']) != '') {
         $postcode = trim($formData['cor_postcode']);
         $postcodeLookup = new Manager_Core_Postcode();
         $addresses = $postcodeLookup->getPropertiesByPostcode(preg_replace('/[^\\w\\ ]/', '', $postcode));
         $addressList = array('' => '--- please select ---');
         foreach ($addresses as $address) {
             $addressList[$address['id']] = $address['singleLineWithoutPostcode'];
         }
         $cor_address = $this->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 => 'Correspondence address does not match with postcode'));
         $cor_address->addValidator($validator, true);
     }
     // If a value for an address lookup is present, the house name or number
     // is not required
     if (isset($formData['cor_postcode'])) {
         $this->getElement('cor_house_number_name')->setRequired(false);
     }
     // todo: sort out server-side validation for foreign address stuff
     // If the address is overseas, toggle  the required status for the
     // relevant fields.
     if (isset($formData['cor_foreign_address']) && 1 == $formData['cor_foreign_address']) {
         $this->getElement('cor_address')->setRequired(false);
         $this->getElement('cor_address_postcode')->setRequired(false);
         $this->getElement('cor_address_line1')->setRequired(true);
         $this->getElement('cor_address_line2')->setRequired(true);
         $this->getElement('country')->setRequired(true);
         // Also change the validators for the postcode field
         $this->getElement('cor_postcode')->setValidators(array(array('NotEmpty', true, array('messages' => array('isEmpty' => 'Please enter zip/postal code for your correspondence address', 'notEmptyInvalid' => 'Please enter a valid zip/postal code for your correspondence address')))));
         $this->getElement('cor_address_postcode')->setValidators(array());
     }
     // Call original isValid()
     return parent::isValid($formData);
 }
 /**
  * Private function to handle form population
  */
 private function _formStepCommonPopulate($pageForm, $stepNum)
 {
     $pageSession = new Zend_Session_Namespace('portfolio_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;
     $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('/portfolio/insurance-quote/step' . $lastCompleted);
         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("Referrer : " . $this->_referrer);
     // Only populate from DB if we are in session and have a reference number
     if (isset($pageSession->CustomerRefNo)) {
         $customerReferenceNumber = $pageSession->CustomerRefNo;
         $policyNumber = $pageSession->PolicyNumber;
         $formData = array();
         // Populate $formData with data from model, if available
         switch ($stepNum) {
             case 1:
                 // Personal Details section
                 $customerManager = new Manager_Insurance_Portfolio_LegacyCustomer();
                 $customer = $customerManager->fetchByRefNo($customerReferenceNumber);
                 $formData['title'] = $customer['title'];
                 $formData['first_name'] = $customer['first_name'];
                 $formData['last_name'] = $customer['last_name'];
                 $formData['phone_number'] = $customer['telephone1'];
                 $formData['mobile_number'] = $customer['telephone2'];
                 $formData['email_address'] = $customer['email_address'];
                 $formData['date_of_birth_at'] = Application_Core_Utilities::mysqlDateToUk($customer['date_of_birth_at']);
                 // Get correspondance Address data
                 // Look up address again to populate dropdown
                 $formData['cor_house_number_name'] = $customer['address1'];
                 // Populate the correspondence address details
                 $formData['cor_address_line1'] = $customer['address1'];
                 $formData['cor_address_line2'] = $customer['address2'];
                 $formData['cor_address_line3'] = $customer['address3'];
                 $formData['cor_address_postcode'] = $customer['postcode'];
                 $formData['cor_postcode'] = $customer['postcode'];
                 $postcodeLookup = new Manager_Core_Postcode();
                 $addresses = $postcodeLookup->getPropertiesByPostcode(preg_replace('/[^\\w\\ ]/', '', $formData['cor_postcode']), $customer['address1']);
                 $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'];
                     }
                 }
                 // Add some validation
                 $cor_address = $pageForm->getSubForm('subform_correspondenceaddress')->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);
                 // Set the address to selected
                 $cor_address->setValue($addressID);
                 // Data Protection section
                 //Extract the DPA values from the session.
                 $dpaManager = new Manager_Core_DataProtection(Manager_Core_DataProtection::USE_SESSION);
                 $dpaItemArray = $dpaManager->getItems(null, Model_Core_DataProtection_ItemEntityTypes::INSURANCE);
                 #Zend_Debug::dump($dpaItemArray);die();
                 foreach ($dpaItemArray 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'] = 1;
                             } else {
                                 $formData['dpa_sms_email'] = 0;
                             }
                             break;
                         case Model_Core_DataProtection_ItemConstraintTypes::MARKETING_BY_THIRDPARTY:
                             if ($currentItem->isAllowed) {
                                 $formData['dpa_resale'] = 1;
                             } else {
                                 $formData['dpa_resale'] = 0;
                             }
                             break;
                     }
                 }
                 // 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;
                 $pageForm->populate($formData);
                 break;
             case 2:
                 // Step needs to retrieve any properties that may have been added to this portfolio quote
                 // This data is NOT form data, just display data since the ajax has added the properties to the
                 // portfolio_properties table
                 $propertyArray = array();
                 $propertyManager = new Manager_Insurance_Portfolio_Property();
                 $propertyArray = $propertyManager->fetchAllProperties($customerReferenceNumber);
                 $propNumb = count($propertyArray->toArray());
                 $formData['propNumb'] = count($propertyArray->toArray());
                 $this->view->propertyList = $propertyArray;
                 $this->view->stepNum = 2;
                 $pageForm->populate($formData);
                 break;
             case 3:
                 /*
                   This step display the properties and displays the quote value
                 */
                 $propertyArray = array();
                 $propertyManager = new Manager_Insurance_Portfolio_Property();
                 $propertyArray = $propertyManager->fetchAllProperties($customerReferenceNumber);
                 $this->view->propertyList = $propertyArray;
                 $this->view->stepNum = 3;
                 break;
             case 4:
                 break;
                 /*
                     populates the remove property dialog
                 */
             /*
                 populates the remove property dialog
             */
             case "removePropertyDialog":
                 $request = $this->getRequest();
                 $formData['propertyid'] = $request->getParam('id');
                 $pageForm->populate($formData);
                 break;
             case "editInsuredAddress":
                 $request = $this->getRequest();
                 $formData['propertyid'] = $request->getParam('id');
                 $propertyManager = new Manager_Insurance_Portfolio_Property();
                 $propertyObj = $propertyManager->getPropertyById($formData['propertyid']);
                 $formData['ins_house_number_name'] = $propertyObj->houseNumber;
                 $formData['ins_postcode'] = $propertyObj->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->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);
                 //Zend_Debug::dump($propertyObj);die();
                 // Get Insured Address data
                 // Look up address again to populate dropdown
                 // Populate the correspondence address details
                 $formData['ins_address_line1'] = $propertyObj->address1;
                 $formData['ins_address_line2'] = $propertyObj->address2;
                 $formData['ins_address_line3'] = $propertyObj->address3;
                 $formData['ins_address_postcode'] = $propertyObj->postcode;
                 $formData['employment_status'] = $propertyObj->tenantOccupation;
                 if ($propertyObj->buildingsSumInsured == 0) {
                     $formData['buildings_cover'] = "";
                 } else {
                     $formData['buildings_cover'] = $propertyObj->buildingsSumInsured;
                     $formData['comprehensive_buildings_insurance'] = 1;
                 }
                 if ($propertyObj->buildingsAccidentalDamage == 'Yes') {
                     $formData['buildings_accidental_damage'] = 1;
                 } else {
                     $formData['buildings_accidental_damage'] = 0;
                 }
                 if ($propertyObj->buildingsNilExcess == 'Yes') {
                     $formData['buildings_nil_excess'] = 1;
                 } else {
                     $formData['buildings_nil_excess'] = 0;
                 }
                 if ($propertyObj->contentsSumInsured == 0) {
                     $formData['contents_cover'] = "";
                 } else {
                     $formData['contents_cover'] = $propertyObj->contentsSumInsured;
                     $formData['full_contents_insurance'] = 1;
                 }
                 if ($propertyObj->contentsAccidentalDamage == 'Yes') {
                     $formData['contents_accidental_damage'] = 1;
                 } else {
                     $formData['contents_accidental_damage'] = 0;
                 }
                 if ($propertyObj->contentsNilExcess == 'Yes') {
                     $formData['contents_nil_excess'] = 1;
                 } else {
                     $formData['contents_nil_excess'] = 0;
                 }
                 if ($propertyObj->limitedContents == 'Yes') {
                     $formData['limited_contents'] = 1;
                 } else {
                     $formData['limited_contents'] = 0;
                 }
                 // Populate the form
                 $pageForm->populate($formData);
                 break;
             case "bankInterestDialog":
                 $propertyManager = new Manager_Insurance_Portfolio_Property();
                 $propertyObjects = $propertyManager->fetchAllProperties($customerReferenceNumber);
                 $propertyArray = $propertyObjects->toArray();
                 $optionList = array('' => '--- please select ---');
                 foreach ($propertyArray as $property) {
                     $optionList[$property['id']] = $property['address1'] . " " . $property['address2'] . " " . $property['address3'] . " " . $property['postcode'];
                 }
                 // Get the subform element for property address that the bank may have interest in
                 $propertyAddressSelect = $pageForm->getSubForm('subform_bank-details-form')->getElement('bank_property');
                 $propertyAddressSelect->setMultiOptions($optionList);
                 $validator = new Zend_Validate_InArray(array('haystack' => array_keys($optionList)));
                 $validator->setMessages(array(Zend_Validate_InArray::NOT_IN_ARRAY => 'Property not in list'));
                 $propertyAddressSelect->addValidator($validator, true);
                 // Set the selected to 0
                 $propertyAddressSelect->setValue('0');
                 // Now fetch any bank interests we have already stored
                 $bankInterestManager = new Manager_Insurance_Portfolio_BankInterest();
                 $this->view->interestList = $bankInterestManager->fetchAllInterests($customerReferenceNumber);
                 $pageForm->populate($formData);
                 break;
             case "additionalDialog":
                 $propertyManager = new Manager_Insurance_Portfolio_Property();
                 $propertyObjects = $propertyManager->fetchAllProperties($customerReferenceNumber);
                 $propertyArray = $propertyObjects->toArray();
                 $optionList = array('' => '--- please select ---');
                 foreach ($propertyArray as $property) {
                     $optionList[$property['id']] = $property['address1'] . " " . $property['address2'] . " " . $property['address3'] . " " . $property['postcode'];
                 }
                 // Get the subform element for property address that the bank may have interest in
                 $propertyAddressSelect = $pageForm->getElement('property');
                 $propertyAddressSelect->setMultiOptions($optionList);
                 $validator = new Zend_Validate_InArray(array('haystack' => array_keys($optionList)));
                 $validator->setMessages(array(Zend_Validate_InArray::NOT_IN_ARRAY => 'Not in list'));
                 $propertyAddressSelect->addValidator($validator, true);
                 // Set the selected to 0
                 $propertyAddressSelect->setValue('0');
                 // Now fetch any Additionals we have already stored
                 $manager = new Manager_Insurance_Portfolio_AdditionalInformation();
                 $qid = $_GET['qid'];
                 $array = $manager->fetchAllByRefNo($customerReferenceNumber, $qid);
                 $this->view->additionalList = $array;
                 $pageForm->populate($formData);
                 break;
             case "claimsDialog":
                 $propertyManager = new Manager_Insurance_Portfolio_Property();
                 $propertyObjects = $propertyManager->fetchAllProperties($customerReferenceNumber);
                 $propertyArray = $propertyObjects->toArray();
                 $optionList = array('' => '--- please select ---');
                 foreach ($propertyArray as $property) {
                     $optionList[$property['id']] = $property['address1'] . " " . $property['address2'] . " " . $property['address3'] . " " . $property['postcode'];
                 }
                 // Get the form element for property address
                 $propertyAddressSelect = $pageForm->getSubForm('subform_previous-claims-form')->getElement('claim_property');
                 $propertyAddressSelect->setMultiOptions($optionList);
                 $validator = new Zend_Validate_InArray(array('haystack' => array_keys($optionList)));
                 $validator->setMessages(array(Zend_Validate_InArray::NOT_IN_ARRAY => 'Not in list'));
                 $propertyAddressSelect->addValidator($validator, true);
                 // Set the selected to 0
                 $propertyAddressSelect->setValue('0');
                 $claimTypeList = array('' => '--- please select ---');
                 $claimTypesSelect = $pageForm->getSubForm('subform_previous-claims-form')->getElement('claim_type');
                 $claimTypes = new Datasource_Insurance_PreviousClaimTypes();
                 $claimTypeObjects = $claimTypes->getPreviousClaimTypes(Model_Insurance_ProductNames::LANDLORDSPLUS);
                 foreach ($claimTypeObjects as $ClaimType) {
                     $claimTypeList[$ClaimType->getClaimTypeID()] = $ClaimType->getClaimTypeText();
                 }
                 $claimTypesSelect->setMultiOptions($claimTypeList);
                 $pageForm->populate($formData);
                 // Now fetch any claims we have already stored
                 $claimsManager = new Manager_Insurance_Portfolio_PreviousClaims();
                 //$array = $claimsManager->fetchAllClaims($customerReferenceNumber);
                 $this->view->claimsList = $claimsManager->fetchAllClaims($customerReferenceNumber);
                 $pageForm->populate($formData);
                 break;
         }
     }
     $this->view->stepNum = $stepNum;
     $this->view->stepMax = $this->_stepMax;
     $tooFarAhead = false;
     return true;
 }
예제 #9
0
 public function isValid($formData = array())
 {
     if (isset($formData['property_postcode']) && trim($formData['property_postcode']) != '') {
         $postcode = trim($formData['property_postcode']);
         $postcodeLookup = new Manager_Core_Postcode();
         $addresses = $postcodeLookup->getPropertiesByPostcode(preg_replace('/[^\\w\\ ]/', '', $postcode));
         $addressList = array('' => '--- please select ---');
         foreach ($addresses as $address) {
             $addressList[$address['id']] = $address['singleLineWithoutPostcode'];
         }
         $ins_address = $this->getElement('property_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);
     }
     // If a value for an address lookup is present, the house name or number is not required
     if (isset($formData['property_postcode'])) {
         $this->getElement('property_number_name')->setRequired(false);
     }
     // If a landline phone number is given, mobile is not mandatory
     if (isset($formData['phone_number']) && trim($formData['phone_number']) != '') {
         $this->getElement('mobile_number')->setRequired(false);
     }
     // If a mobile phone number is given, landline is not mandatory
     if (isset($formData['mobile_number']) && trim($formData['mobile_number']) != '') {
         $this->getElement('phone_number')->setRequired(false);
     }
     $result = parent::isValid($formData);
     $customerManager = new Manager_Core_Customer();
     $customer = $customerManager->getCustomerByEmailAddress($formData['email']);
     if ($customer) {
         // Customer exists, error the form
         $this->email->addError('This email is already in use. Have you signed up before?')->markAsError();
         return false;
     } else {
         return $result;
     }
 }
예제 #10
0
 /**
  * Overridden isValid() method for pre-validation code
  *
  * @param array $formData data typically from a POST or GET request
  *
  * @return bool
  */
 public function isValid($formData = array())
 {
     $coverCount = 0;
     if (isset($formData['buildings_accidental_damage']) && $formData['buildings_accidental_damage'] == 1) {
         $coverCount++;
         $this->getElement('buildings_cover')->setRequired(true);
     }
     if (isset($formData['buildings_nil_excess']) && $formData['buildings_nil_excess'] == 1) {
         $coverCount++;
         $this->getElement('buildings_cover')->setRequired(true);
     }
     if (isset($formData['contents_accidental_damage']) && $formData['contents_accidental_damage'] == 1) {
         $coverCount++;
         $this->getElement('contents_cover')->setRequired(true);
     }
     if (isset($formData['contents_nil_excess']) && $formData['contents_nil_excess'] == 1) {
         $coverCount++;
         $this->getElement('contents_cover')->setRequired(true);
     }
     if (isset($formData['limited_contents']) && $formData['contents_cover'] > 0) {
         $coverCount++;
         $limitedContents = $this->getElement('limited_contents');
         $limitedContentsValidator = new Zend_Validate_LessThan(array('max' => 1));
         $limitedContentsValidator->setMessage('&nbsp;Limited Contents cannot be selected with Full Contents', Zend_Validate_LessThan::NOT_LESS);
         $limitedContents->addValidator($limitedContentsValidator, true);
     }
     if (isset($formData['limited_contents']) && $formData['limited_contents'] == 1 || (isset($formData['contents_cover']) && $formData['contents_cover'] > 0 || isset($formData['buildings_cover']) && $formData['buildings_cover'] > 0)) {
         $coverCount++;
     }
     // Set up validation for Building cover maximun
     // value can be empty OR Greater Than 50k and refer after 1000k
     $buildingsCover = $this->getElement('buildings_cover');
     $buildingsValidator = new Zend_Validate_GreaterThan(array('min' => 49999));
     $buildingsValidator->setMessage('Buildings cover must be over £50000', Zend_Validate_GreaterThan::NOT_GREATER);
     $buildingsCover->addValidator($buildingsValidator, true);
     // Set up validation for contents cover maximun
     // value can be empty OR Greater Than 10k and refer after 60k
     $contentsCover = $this->getElement('contents_cover');
     $contentsValidator = new Zend_Validate_GreaterThan(array('min' => 9999));
     $contentsValidator->setMessage('Contents cover must be over £10000', Zend_Validate_GreaterThan::NOT_GREATER);
     $contentsCover->addValidator($contentsValidator, true);
     $formData['covercount'] = $coverCount;
     $covers = $this->getElement('covercount');
     $optionsValidator = new Zend_Validate_GreaterThan(array('min' => 0));
     $optionsValidator->setMessage("You have not selected a cover", Zend_Validate_GreaterThan::NOT_GREATER);
     $covers->addValidator($optionsValidator, true);
     // If a postcode is or was present, look it up and populate the allowed values of the associated dropdown
     if (isset($formData['ins_postcode']) && trim($formData['ins_postcode']) != '') {
         $postcode = trim($formData['ins_postcode']);
         $postcodeLookup = new Manager_Core_Postcode();
         $addresses = $postcodeLookup->getPropertiesByPostcode(preg_replace('/[^\\w\\ ]/', '', $postcode));
         $addressList = array('' => '--- please select ---');
         foreach ($addresses as $address) {
             $addressList[$address['id']] = $address['singleLineWithoutPostcode'];
         }
         $ins_address = $this->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);
     }
     if (isset($formData['ins_address_postcode']) && $formData['ins_address_postcode'] != '') {
         $this->getElement('ins_postcode')->setRequired(false);
         $this->getElement('ins_address')->setRequired(false);
     }
     // Call original isValid()
     return parent::isValid($formData);
 }
 public function forcePopulate($formData)
 {
     //Populate the form elements with data retrieved from the datasource, unless
     //the user has provided new datas.
     //        $auth = Zend_Auth::getInstance();
     //        $auth->setStorage(new Zend_Auth_Storage_Session('homelet_customer'));
     //        $session = $auth->getStorage()->read();
     $session = new Zend_Session_Namespace('referencing_global');
     $customerManager = new Manager_Referencing_Customer();
     $customer = $customerManager->getCustomer($session->customerId);
     if (empty($formData['personal_title'])) {
         $formData['personal_title'] = $customer->getTitle();
     }
     if (empty($formData['first_name'])) {
         $formData['first_name'] = $customer->getFirstName();
     }
     if (empty($formData['last_name'])) {
         $formData['last_name'] = $customer->getLastName();
     }
     if (empty($formData['property_postcode'])) {
         $formData['property_postcode'] = $customer->getPostCode();
     }
     if (empty($formData['telephone_day'])) {
         $formData['telephone_day'] = $customer->getTelephone(Model_Core_Customer::TELEPHONE1);
     }
     if (empty($formData['fax_number'])) {
         $formData['fax_number'] = $customer->getFax();
     }
     if (empty($formData['telephone_evening'])) {
         $formData['telephone_evening'] = $customer->getTelephone(Model_Core_Customer::TELEPHONE2);
     }
     if (empty($formData['email'])) {
         $formData['email'] = $customer->getEmailAddress();
     }
     $postcode = new Manager_Core_Postcode();
     $addresses = $postcode->getPropertiesByPostcode($formData['property_postcode']);
     $filterString = $customer->getAddressLine(1);
     $addressList = array();
     $addressID = 0;
     foreach ($addresses as $address) {
         $addressList[$address['id']] = $address['singleLineWithoutPostcode'];
         $cleanAddress = str_replace(",", "", $address['singleLineWithoutPostcode']);
         if (stripos($cleanAddress, $filterString) === 0) {
             $addressID = $address['id'];
         }
     }
     // Add some validation
     $property_address = $this->getElement('property_address');
     $property_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'));
     $property_address->addValidator($validator, true);
     // Set the address to selected
     $property_address->setValue($addressID);
     //Allow Zend to complete the population process.
     $this->populate($formData);
     $this->property_address->setValue($addressID);
 }
예제 #12
0
 public function isValid($formData = array())
 {
     // If a postcode is or was present, look it up and populate the allowed values of the associated dropdown
     if (isset($formData['ins_postcode']) && trim($formData['ins_postcode']) != '') {
         $postcode = trim($formData['ins_postcode']);
         $postcodeLookup = new Manager_Core_Postcode();
         $addresses = $postcodeLookup->getPropertiesByPostcode(preg_replace('/[^\\w\\ ]/', '', $postcode));
         $addressList = array('' => '--- please select ---');
         foreach ($addresses as $address) {
             $addressList[$address['id']] = $address['singleLineWithoutPostcode'];
         }
         $ins_address = $this->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);
         $landlordsRiskAreas = new Datasource_Insurance_LandlordsPlus_RiskAreas();
         try {
             $landlordsRiskAreas = $landlordsRiskAreas->getByPostcode($formData['ins_postcode']);
         } catch (Datasource_Exception_PostcodeNotFoundException $e) {
             // Catch postcode not found exception and rethrow chained risk area not found exception
             throw new LandlordsInsuranceQuote_Form_Exception_RiskAreaNotFoundException($e->getMessage(), $e->getCode(), $e);
         }
         if ($landlordsRiskAreas['floodArea'] != '600') {
             $this->getElement('exclude_flood_cover')->setRequired(false);
         }
     } else {
         $this->getElement('exclude_flood_cover')->setRequired(false);
     }
     if (isset($formData['ins_postcode'])) {
         $this->getElement('ins_address')->setRequired(false);
         $formData['ins_address'] = null;
     }
     // Call original isValid()
     return parent::isValid($formData);
 }
예제 #13
0
 private function validateSelect($set)
 {
     $validator = new Zend_Validate_InArray($set);
     $messages = array(Zend_Validate_InArray::NOT_IN_ARRAY => $this->translate('publish_validation_error_inarray_notinarray'));
     $validator->setMessages($messages);
     $validators[] = $validator;
     return $validators;
 }
예제 #14
0
 /**
  * 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;
 }
예제 #15
0
 public function init()
 {
     $seccion = new Application_Model_Seccion();
     $array = $seccion->listarSeccionesPeriodoActualActivos();
     $include = new Application_Model_Includes();
     //$q2a=$include->query2array($array, 'iSeccIdSeccion','vSeccDescripcion');
     $q2a = $include->querytoeach($array, "iSeccIdSeccion");
     $validator = new Zend_Validate_InArray($q2a);
     $validator->setHaystack($q2a);
     $validator->setMessages(array(Zend_Validate_InArray::NOT_IN_ARRAY => 'Eliga una sección'));
     $this->setAction('/admin/agregaralumno')->setMethod('post')->setAttrib('id', 'formLogin')->setAttrib('enctype', 'multipart/form-data');
     $nombreusuario = $this->createElement('text', 'nombreusuario', array('label' => 'Nombre del Usuario', 'placeholder' => 'Máximo 25 caracteres'));
     $nombreusuario->addValidator('notEmpty', true, array('messages' => array('isEmpty' => 'Campo Requerido')))->addValidator('alpha')->addValidator('stringLength', false, array(5, 25, 'messages' => "Entre 5 y 25 caracteres"))->setRequired(true)->addFilter("StringToUpper");
     $nombreusuario->setDecorators(array('ViewHelper', 'Description', 'Errors', array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div')), array(array('td' => 'HtmlTag'), array('tag' => 'td')), array('Label', array('tag' => 'td'))));
     $clave = $this->createElement('password', 'clave', array('label' => 'Contraseña'));
     $clave->addValidator('notEmpty', true, array('messages' => array('isEmpty' => 'Campo Requerido')))->addFilter('alnum', array('allowwhitespace' => true))->addValidator('stringLength', false, array(5, 20, 'messages' => "Entre 5 y 20 caracteres"))->setRequired(true)->addFilter("StringToUpper");
     $clave->setDecorators(array('ViewHelper', 'Description', 'Errors', array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div')), array(array('td' => 'HtmlTag'), array('tag' => 'td')), array('Label', array('tag' => 'td'))));
     $email = $this->createElement('text', 'email', array('label' => 'Direccion de Correo', 'placeholder' => '*****@*****.**'));
     $email->addValidator('notEmpty', true, array('messages' => array('isEmpty' => 'Campo Requerido')))->addValidator('regex', true, array('patern' => '/^[(a-zA-Z0-9@)].+$/', array('regexNotMatch' => 'Solo Letras y numeros')))->addValidator('stringLength', false, array(5, 100, 'messages' => "Entre 5 y 100 caracteres"))->setRequired(true)->addFilter("StringToUpper");
     $email->setDecorators(array('ViewHelper', 'Description', 'Errors', array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div')), array(array('td' => 'HtmlTag'), array('tag' => 'td')), array('Label', array('tag' => 'td'))));
     $dni = $this->createElement('text', 'dni', array('label' => 'Numero Dni', 'placeholder' => '8 Dígitos'));
     $dni->addValidator('notEmpty', true, array('messages' => array('isEmpty' => 'Campo Requerido')))->addValidator('regex', true, array('patern' => '/^[(0-9)]+$/', array('regexNotMatch' => 'Solo Numeros')))->addValidator('stringLength', false, array(8, 8, 'messages' => "DNI se Compone e 8 Carateres"))->setRequired(true)->addFilter("StringTrim");
     $dni->setDecorators(array('ViewHelper', 'Description', 'Errors', array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div')), array(array('td' => 'HtmlTag'), array('tag' => 'td')), array('Label', array('tag' => 'td'))));
     $dniapo = $this->createElement('text', 'dniapo', array('label' => 'DNI Apoderado', 'disabled' => true));
     $dniapo->addValidator('notEmpty', true, array('messages' => array('isEmpty' => 'Campo Requerido')))->addValidator('regex', true, array('patern' => '/^[(0-9)]+$/', array('regexNotMatch' => 'Solo Numeros')))->addValidator('stringLength', false, array(8, 8, 'messages' => "DNI se Compone e 8 Carateres"))->addFilter("StringTrim");
     $dniapo->setDecorators(array('ViewHelper', 'Description', 'Errors', array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div')), array(array('td' => 'HtmlTag'), array('tag' => 'td')), array('Label', array('tag' => 'td'))));
     $nombreapo = $this->createElement('text', 'nombreapo', array('label' => 'Nombre del Apoderado', 'disabled' => true));
     $nombreapo->addValidator('notEmpty', true, array('messages' => array('isEmpty' => 'Campo Requerido')))->addValidator('regex', true, array('patern' => '/^[(a-z A-Z)]+$/', array('regexNotMatch' => 'Solo Letras')))->addValidator('stringLength', false, array(2, 150, 'messages' => "Entre 2 y 150 caracteres"))->addFilter("StringToUpper")->addFilter("StringTrim");
     $nombreapo->setDecorators(array('ViewHelper', 'Description', 'Errors', array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div')), array(array('td' => 'HtmlTag'), array('tag' => 'td')), array('Label', array('tag' => 'td'))));
     $idapoderado = $this->createElement('text', 'idapoderado', array('label' => 'Id del Apoderado', 'disabled' => true));
     $idapoderado->addValidator('notEmpty', true, array('messages' => array('isEmpty' => 'Campo Requerido')))->addValidator('regex', true, array('patern' => '/^[(0-9)]+$/', array('regexNotMatch' => 'Solo Numeros')))->addValidator('stringLength', false, array(1, 8, 'messages' => "Elegir DNI"))->addFilter("StringTrim");
     $idapoderado->setDecorators(array('ViewHelper', 'Description', 'Errors', array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div')), array(array('td' => 'HtmlTag'), array('tag' => 'td')), array('Label', array('tag' => 'td'))));
     // creating object for Zend_Form_Element_File
     $doc_file = new Zend_Form_Element_File('foto');
     $doc_file->setLabel('Foto: ')->setRequired(true)->setDestination('main/fotos')->addValidator('Extension', false, 'jpg,png,gif')->addValidator('Size', false, 5120000);
     //5Mb
     $doc_file->setDecorators(array(array('Description', array('tag' => 'p', 'class' => 'description', 'escape' => false)), array('File'), array('Errors'), array('HtmlTag', array('tag' => 'div')), array('Label')));
     $nombre = $this->createElement('text', 'nombre', array('label' => 'Nombre '));
     $nombre->addValidator('notEmpty', true, array('messages' => array('isEmpty' => 'Campo Requerido')))->addValidator('stringLength', false, array(2, 150, 'messages' => "Entre 2 y 150 caracteres"))->setRequired(true)->addFilter("StringToUpper")->addFilter('alpha', array('allowwhitespace' => true))->addFilter("StringTrim");
     $nombre->setDecorators(array('ViewHelper', 'Description', 'Errors', array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div')), array(array('td' => 'HtmlTag'), array('tag' => 'td')), array('Label', array('tag' => 'td'))));
     $appaterno = $this->createElement('text', 'appaterno', array('label' => 'Apellido Paterno '));
     $appaterno->addValidator('notEmpty', true, array('messages' => array('isEmpty' => 'Campo Requerido')))->addValidator('stringLength', false, array(2, 150, 'messages' => "Entre 2 y 150 caracteres"))->setRequired(true)->addFilter("StringToUpper")->addFilter('alpha', array('allowwhitespace' => true))->addFilter("StringTrim");
     $appaterno->setDecorators(array('ViewHelper', 'Description', 'Errors', array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div')), array(array('td' => 'HtmlTag'), array('tag' => 'td')), array('Label', array('tag' => 'td'))));
     $apmaterno = $this->createElement('text', 'apmaterno', array('label' => 'Apellido Materno '));
     $apmaterno->addValidator('notEmpty', true, array('messages' => array('isEmpty' => 'Campo Requerido')))->addValidator('stringLength', false, array(2, 150, 'messages' => "Entre 2 y 150 caracteres"))->setRequired(true)->addFilter("StringToUpper")->addFilter('alpha', array('allowwhitespace' => true))->addFilter("StringTrim");
     $apmaterno->setDecorators(array('ViewHelper', 'Description', 'Errors', array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div')), array(array('td' => 'HtmlTag'), array('tag' => 'td')), array('Label', array('tag' => 'td'))));
     $btnregistrar = $this->createElement('submit', 'registrar', array('label' => 'Registrar'));
     $btnregistrar->setDecorators(array('ViewHelper', 'Description', 'Errors', array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div')), array(array('td' => 'HtmlTag'), array('tag' => 'td'))));
     $btnapoderado = $this->createElement('button', 'buscar', array('label' => 'Buscar Apoderado', 'onclick' => 'buscaapoderado();'));
     $btnapoderado->setDecorators(array('ViewHelper', 'Description', 'Errors', array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div')), array(array('td' => 'HtmlTag'), array('tag' => 'td'))));
     $gradosactuales = new Application_Model_Grado();
     $includes = new Application_Model_Includes();
     $arraygrados = $gradosactuales->listarGradosActivos();
     $arraygradostoarray = $includes->query2array($arraygrados, 'iGradoIdGrado', 'vGradoDescripcion');
     $grado = $this->createElement('select', 'cbogrado', array('label' => 'Grado', 'autocomplete' => false, 'multiOptions' => $arraygradostoarray, 'onChange' => 'cargarseccion();'));
     $grado->setDecorators(array('ViewHelper', 'Description', 'Errors', array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div')), array(array('td' => 'HtmlTag'), array('tag' => 'td')), array('Label', array('tag' => 'td'))));
     $seccion = $this->createElement('select', 'cboseccion', array('label' => 'Seccion', 'multiOptions' => array("0" => "Seleccionar Sección")));
     $seccion->addValidator($validator);
     $seccion->addValidator('notEmpty', true, array('messages' => array('isEmpty' => 'Campo requerido')));
     $seccion->setDecorators(array('ViewHelper', 'Description', 'Errors', array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div')), array(array('td' => 'HtmlTag'), array('tag' => 'td')), array('Label', array('tag' => 'td'))));
     $sexo = $this->createElement('radio', 'sexo', array('value' => 'M', 'checked' => 'true', 'Label' => 'Sexo'));
     $sexo->addMultiOptions(array('M' => 'Masculino', 'F' => 'Femenino'));
     $sexo->setDecorators(array('ViewHelper', 'Description', 'Errors', array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div')), array(array('td' => 'HtmlTag'), array('tag' => 'td')), array('Label', array('tag' => 'td'))));
     $idapo = $this->createElement('hidden', 'idapo');
     $this->addElement($btnapoderado)->addElement($idapo)->addElement($idapoderado)->addElement($nombreapo)->addElement($dniapo)->addElement($grado)->addElement($seccion)->addElement($nombre)->addElement($appaterno)->addElement($apmaterno)->addElement($sexo)->addElement($doc_file)->addElement($dni)->addElement($email)->addElement($nombreusuario)->addElement($clave)->addElement($btnregistrar);
 }
예제 #16
0
 public function isValid($formData = array())
 {
     if (isset($formData['property_postcode']) && trim($formData['property_postcode']) != '') {
         $postcode = trim($formData['property_postcode']);
         $postcodeLookup = new Manager_Core_Postcode();
         $addresses = $postcodeLookup->getPropertiesByPostcode(preg_replace('/[^\\w\\ ]/', '', $postcode));
         $addressList = array('' => '--- please select ---');
         foreach ($addresses as $address) {
             $addressList[$address['id']] = $address['singleLineWithoutPostcode'];
         }
         $ins_address = $this->getElement('property_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);
     }
     // If a value for an address lookup is present, the house name or number is not required
     if (isset($formData['property_postcode'])) {
         $this->getElement('property_number_name')->setRequired(false);
     }
     if (isset($formData['cancel_future_employment']) && $formData['cancel_future_employment'] == 1) {
         $this->getElement('company_name')->setRequired(false);
         $this->getElement('contact_name')->setRequired(false);
         $this->getElement('contact_position')->setRequired(false);
         $this->getElement('property_number_name')->setRequired(false);
         $this->getElement('property_postcode')->setRequired(false);
         $this->getElement('property_address')->setRequired(false);
         $this->getElement('telephone_number')->setRequired(false);
         $this->getElement('email')->setRequired(false);
         $this->getElement('income')->setRequired(false);
         $this->getElement('reference_number')->setRequired(false);
         $this->getElement('position')->setRequired(false);
         $this->getElement('is_permanent')->setRequired(false);
         $this->getElement('tenancy_start_date')->setRequired(false);
     }
     return parent::isValid($formData);
 }