Example #1
0
 public function isValid($postData)
 {
     $contacts = new LettingAgents_Manager_Contacts();
     $pageSession = new Zend_Session_Namespace('letting_agents_application');
     if ($contacts->fetchByAgencyUid($this->_agent_uid)) {
         switch ($this->_organisationId) {
             case LettingAgents_Object_CompanyTypes::LimitedCompany:
                 $this->getSubForm('subform_limited-company-contacts')->getElement('contact_name')->setRequired(false);
                 break;
             case LettingAgents_Object_CompanyTypes::LimitedLiabilityPartnership:
                 if ($postData['postcode'] != "") {
                     $this->getSubForm('subform_limited-liability-partnership')->getElement('contact_name')->setRequired(true);
                 } elseif ($postData['contact_name'] != "") {
                     $this->getSubForm('subform_address')->getElement('postcode')->setRequired(true);
                 } else {
                     $this->getSubForm('subform_limited-liability-partnership')->getElement('contact_name')->setRequired(false);
                     $this->getSubForm('subform_address')->getElement('postcode')->setRequired(false);
                     $this->getSubForm('subform_address')->getElement('address')->setRequired(false);
                     $this->getSubForm('subform_address')->getElement('address')->setRegisterInArrayValidator(false);
                 }
                 break;
             case LettingAgents_Object_CompanyTypes::Partnership:
                 if ($postData['postcode'] != "" || $postData['contact_name'] != "") {
                     $this->getSubForm('subform_partnership')->getElement('contact_name')->setRequired(true);
                 } else {
                     $this->getSubForm('subform_partnership')->getElement('contact_name')->setRequired(false);
                     $this->getSubForm('subform_address')->getElement('postcode')->setRequired(false);
                     $this->getSubForm('subform_address')->getElement('address')->setRequired(false);
                     $this->getSubForm('subform_address')->getElement('address')->setRegisterInArrayValidator(false);
                 }
                 break;
         }
     } elseif ($postData['contact_name'] != '') {
         $agent_id = $this->_agent_uid;
         $db = Zend_Registry::get('db_letting_agents');
         //die($clause);
         $validator = new Zend_Validate_Db_RecordExists(array('table' => 'contact', 'field' => 'agency_id', 'value' => $agent_id, 'adapter' => $db));
         $validator->setMessages(array(Zend_Validate_Db_RecordExists::ERROR_NO_RECORD_FOUND => 'Please Click Add Director'));
         switch ($this->_organisationId) {
             case LettingAgents_Object_CompanyTypes::LimitedCompany:
                 $this->getSubForm('subform_limited-company-contacts')->getElement('contact_name')->addValidator($validator);
                 $validator->setMessages(array(Zend_Validate_Db_RecordExists::ERROR_NO_RECORD_FOUND => 'Please Click Add Director'));
                 break;
             case LettingAgents_Object_CompanyTypes::LimitedLiabilityPartnership:
                 $this->getSubForm('subform_limited-liability-partnership')->getElement('contact_name')->addValidator($validator);
                 $validator->setMessages(array(Zend_Validate_Db_RecordExists::ERROR_NO_RECORD_FOUND => 'Please Click Add Partner'));
                 break;
             case LettingAgents_Object_CompanyTypes::Partnership:
                 $this->getSubForm('subform_partnership')->getElement('contact_name')->addValidator($validator);
                 $validator->setMessages(array(Zend_Validate_Db_RecordExists::ERROR_NO_RECORD_FOUND => 'Please Click Add Partner'));
                 break;
         }
     }
     return parent::isValid($postData);
 }
 /**
  * 
  * Add a new contact...
  */
 public function addContactAction()
 {
     $return = array();
     $pageSession = new Zend_Session_Namespace('letting_agents_application');
     $agent = new LettingAgents_Manager_AgentApplication();
     $agentData = new LettingAgents_Object_AgentApplication();
     $agentData = $agent->fetchByUid($pageSession->agentUniqueId);
     $agencyid = $agentData->get_id();
     $postData = $this->getRequest()->getParams();
     $contactManager = new LettingAgents_Manager_Contacts();
     $agent = new LettingAgents_Manager_AgentApplication();
     $agentData = new LettingAgents_Object_AgentApplication();
     $agentData = $agent->fetchByUid($pageSession->agentUniqueId);
     $organisation_type = $agentData->get_organisation_type();
     switch ($organisation_type) {
         case LettingAgents_Object_CompanyTypes::LimitedCompany:
             $data = new LettingAgents_Object_Contact();
             $partialFile = "limited-company-list.phtml";
             break;
         case LettingAgents_Object_CompanyTypes::LimitedLiabilityPartnership:
         case LettingAgents_Object_CompanyTypes::Partnership:
             $data = new LettingAgents_Object_PartnershipContact();
             $partialFile = "partnership-list.phtml";
             break;
     }
     $data->set_agency_id($agencyid);
     if (isset($postData['contact_name'])) {
         $data->set_contact_name($postData['contact_name']);
     }
     if (isset($postData['address1'])) {
         $data->set_address1($postData['address1']);
     }
     if (isset($postData['address2'])) {
         $data->set_address2($postData['address2']);
     }
     if (isset($postData['address3'])) {
         $data->set_address3($postData['address3']);
     }
     if (isset($postData['birth_date'])) {
         $data->set_birth_date($postData['birth_date']);
     }
     if (isset($postData['ni_number'])) {
         $data->set_ni_number($postData['ni_number']);
     }
     if (isset($postData['passport_number'])) {
         $data->set_passport_number($postData['passport_number']);
     }
     if (isset($postData['postcode'])) {
         $data->set_postcode($postData['postcode']);
     }
     $lastid = $contactManager->save($data);
     # $contactManager->fetchByAgencyUid($pageSession->agentUniqueId);
     $return['contactHtml'] = $this->view->partialLoop("partials/{$partialFile}", $contactManager->fetchByAgencyUid($pageSession->agentUniqueId));
     echo Zend_Json::encode($return);
 }
 /**
  * Private function to handle form population
  */
 private function _formStepCommonPopulate($pageForm, $stepNum)
 {
     $pageSession = new Zend_Session_Namespace('letting_agents_application');
     // First of all check that this form should be viewable and the user isn't trying to skip ahead
     //	$agentData = new LettingAgents_Object_AgentApplication();
     $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
         $response = $this->getResponse();
         $response->setRedirect('/letting-agents/sign-up/step' . $lastCompleted);
         $response->sendResponse();
         return false;
     }
     // Only populate from DB if we are in session and have a reference number
     if (isset($pageSession->agentUniqueId)) {
         $formData = array();
         // Populate $formData with data from model, if available
         switch ($stepNum) {
             case 1:
                 $agent = new LettingAgents_Manager_AgentApplication();
                 if ($agentData = $agent->fetchByUid($pageSession->agentUniqueId)) {
                     #Zend_Debug::dump($agentData);die();
                     $formData['is_previous_client'] = $agentData->get_is_previous_client();
                     $formData['campaign_code'] = $agentData->get_campaign_code();
                     $formData['legal_name'] = $agentData->get_legal_name();
                     $formData['trading_name'] = $agentData->get_trading_name();
                     $formData['organisation_type'] = $agentData->get_organisation_type();
                     list($year, $month, $day) = explode("-", $agentData->get_date_established());
                     $formData['date_established'] = "{$day}/{$month}/{$year}";
                     $formData['is_associated'] = $agentData->get_is_associated();
                     $formData['associated_text'] = $agentData->get_associated_text();
                     $formData['contact_name'] = $agentData->get_contact_name();
                     $formData['contact_number'] = $agentData->get_contact_number();
                     $formData['general_email'] = $agentData->get_contact_email();
                 }
                 $pageForm->populate($formData);
                 break;
             case 2:
                 $agent = new LettingAgents_Manager_AgentApplication();
                 $agentData = $agent->fetchByUid($pageSession->agentUniqueId);
                 //	Zend_Debug::dump($agentData);die();
                 // There could be multiple contacts here depending on the organisation type
                 $contactManager = new LettingAgents_Manager_Contacts();
                 $contactData = $contactManager->fetchByAgencyUid($pageSession->agentUniqueId);
                 switch ($agentData->get_organisation_type()) {
                     // Fetch Agency contacts when agency type is LimitedCompany
                     case LettingAgents_Object_CompanyTypes::LimitedCompany:
                         $formData['registration_number'] = $agentData->get_company_registration_number();
                         $contactsHtml = $this->view->partialLoop('partials/limited-company-list.phtml', $contactData);
                         $this->view->contacts = $contactsHtml;
                         break;
                         // Fetch Agency contacts when agency type is LimitedLiabilityPartnership
                     // Fetch Agency contacts when agency type is LimitedLiabilityPartnership
                     case LettingAgents_Object_CompanyTypes::LimitedLiabilityPartnership:
                         $contactsHtml = $this->view->partialLoop('partials/partnership-list.phtml', $contactData);
                         $this->view->contacts = $contactsHtml;
                         break;
                         // Fetch Agency contacts when agency type is Partnership
                     // Fetch Agency contacts when agency type is Partnership
                     case LettingAgents_Object_CompanyTypes::Partnership:
                         $contactsHtml = $this->view->partialLoop('partials/partnership-list.phtml', $contactData);
                         $this->view->contacts = $contactsHtml;
                         break;
                         // Fetch Agency contacts when agency type is SoleTrader
                     // Fetch Agency contacts when agency type is SoleTrader
                     case LettingAgents_Object_CompanyTypes::SoleTrader:
                         $formData['uid'] = $contactData[0]['uid'];
                         $formData['contact_name'] = $agentData->get_contact_name();
                         list($year, $month, $day) = explode("-", $contactData[0]['birth_date']);
                         $formData['birth_date'] = "{$day}/{$month}/{$year}";
                         $formData['ni_number'] = $contactData[0]['ni_number'];
                         $formData['passport_number'] = $contactData[0]['passport_number'];
                         $formData['address_line1'] = $contactData[0]['address1'];
                         $formData['address_line2'] = $contactData[0]['address2'];
                         $formData['address_line3'] = $contactData[0]['address3'];
                         $formData['address_postcode'] = $contactData[0]['postcode'];
                         $formData['postcode'] = $contactData[0]['postcode'];
                         break;
                 }
                 $pageForm->populate($formData);
                 break;
             case 3:
                 // Fetch Agent data
                 $agent = new LettingAgents_Manager_AgentApplication();
                 $agentData = $agent->fetchByUid($pageSession->agentUniqueId);
                 //Zend_Debug::dump($agentData);die();
                 $formData['current_referencing_supplier'] = $agentData->get_current_referencing_supplier();
                 $formData['general_email_address'] = $agentData->get_contact_email();
                 $agentData->get_number_of_branches() == 0 ? $formData['no_of_branches'] = "" : ($formData['no_of_branches'] = $agentData->get_number_of_branches());
                 $agentData->get_number_of_employees() == 0 ? $formData['no_of_staff'] = "" : ($formData['no_of_staff'] = $agentData->get_number_of_employees());
                 $agentData->get_number_of_lets() == 0 ? $formData['no_of_properties_managed'] = "" : ($formData['no_of_properties_managed'] = $agentData->get_number_of_lets());
                 $agentData->get_number_of_landlords() == 0 ? $formData['no_of_landlords'] = "" : ($formData['no_of_landlords'] = $agentData->get_number_of_landlords());
                 // Fetch agency office data
                 $officeManager = new LettingAgents_Manager_Office();
                 // This only returns two items
                 $offices = $officeManager->fetchAllByAgencyUid($pageSession->agentUniqueId);
                 $officeManager = new LettingAgents_Manager_Office();
                 foreach ($offices as $office) {
                     //Zend_Debug::dump($office);die();
                     switch ($office->office_type) {
                         case LettingAgents_Object_OfficeTypes::BranchOffice:
                             $formData['trading_uid'] = $office->uid;
                             $formData['trading_address_line1'] = $office->address_1;
                             $formData['trading_address_line2'] = $office->address_2;
                             $formData['trading_address_line3'] = $office->address_3;
                             $formData['trading_address_postcode'] = $office->postcode;
                             $formData['trading_postcode'] = $office->postcode;
                             break;
                         case LettingAgents_Object_OfficeTypes::HeadOffice:
                             $formData['accounts_uid'] = $office->uid;
                             $formData['accounts_address_line1'] = $office->address_1;
                             $formData['accounts_address_line2'] = $office->address_2;
                             $formData['accounts_address_line3'] = $office->address_3;
                             $formData['accounts_address_postcode'] = $office->postcode;
                             $formData['accounts_postcode'] = $office->postcode;
                             break;
                     }
                 }
                 // Fetch the multiple emails
                 $multiEmail = new LettingAgents_Datasource_Email();
                 $emails = array();
                 $emails = $multiEmail->fetchById($agentData->get_id());
                 foreach ($emails as $email) {
                     switch ($email['address_type']) {
                         case LettingAgents_Object_EmailTypes::General:
                             $formData['general_email_address'] = $email['email_address'];
                             break;
                         case LettingAgents_Object_EmailTypes::Referencing:
                             $formData['email_for_referencing'] = $email['email_address'];
                             break;
                         case LettingAgents_Object_EmailTypes::Insurance:
                             $formData['email_for_insurance'] = $email['email_address'];
                             break;
                         case LettingAgents_Object_EmailTypes::RentGuaranteeRenewals:
                             $formData['email_for_rg_renewals'] = $email['email_address'];
                             break;
                         case LettingAgents_Object_EmailTypes::Invoicing:
                             $formData['email_for_invoicing'] = $email['email_address'];
                             break;
                         case LettingAgents_Object_EmailTypes::HomeLetUpdates:
                             $formData['email_for_marketing'] = $email['email_address'];
                             break;
                     }
                 }
                 $pageForm->populate($formData);
                 break;
             case 4:
                 // Fetch Agent data
                 $agent = new LettingAgents_Manager_AgentApplication();
                 $agentData = $agent->fetchByUid($pageSession->agentUniqueId);
                 // ensure that agent_type has a value
                 $agent_type = $agentData->get_application_type();
                 $agent_type == "" ? $formData['agent_type'] = "standard" : ($formData['agent_type'] = $agent_type);
                 $pageForm->populate($formData);
                 break;
         }
     }
     $this->view->stepNum = $stepNum;
     $this->view->stepMax = $this->_stepMax;
     $tooFarAhead = false;
     return true;
 }