/** * Saves the form data to the datastore. * * @return void */ public function saveData() { $session = new Zend_Session_Namespace('referencing_global'); $data = $this->getValues(); $referenceManager = new Manager_Referencing_Reference(); $reference = $referenceManager->getReference($session->referenceId); //Locate the current residence object, so that we can attach the current landlords //reference to that. foreach ($reference->referenceSubject->residences as $residence) { if ($residence->chronology == Model_Referencing_ResidenceChronology::CURRENT) { $currentResidence = $residence; break; } } //Create a new residential referee if one does not exist already. if (empty($currentResidence->refereeDetails)) { $refereeManager = new Manager_Referencing_ResidenceReferee(); $currentResidence->refereeDetails = $refereeManager->createReferee($currentResidence->id); } //There is currently no way to capture the type of residential referee, so //assign a default for now. $currentResidence->refereeDetails->type = Model_Referencing_ResidenceRefereeTypes::PRIVATE_LANDLORD; //Record the referee's name. if (empty($currentResidence->refereeDetails->name)) { $nameManager = new Manager_Core_Name(); $currentResidence->refereeDetails->name = $nameManager->createName(); } $currentResidence->refereeDetails->name->title = $data['personal_title']; $currentResidence->refereeDetails->name->firstName = $data['first_name']; $currentResidence->refereeDetails->name->lastName = $data['last_name']; //Record the referee's contact details if (empty($currentResidence->refereeDetails->contactDetails)) { $contactDetailsManager = new Manager_Core_ContactDetails(); $currentResidence->refereeDetails->contactDetails = $contactDetailsManager->createContactDetails(); } $currentResidence->refereeDetails->contactDetails->telephone1 = $data['telephone_day']; $currentResidence->refereeDetails->contactDetails->telephone2 = $data['telephone_evening']; $currentResidence->refereeDetails->contactDetails->fax1 = $data['fax_number']; $currentResidence->refereeDetails->contactDetails->email1 = $data['email']; //Record the referee's address. $postcodeManager = new Manager_Core_Postcode(); $propertyAddress = $postcodeManager->getPropertyByID($data['property_address'], false); $addressLine1 = ($propertyAddress['organisation'] != '' ? "{$propertyAddress['organisation']}, " : '') . ($propertyAddress['houseNumber'] != '' ? "{$propertyAddress['houseNumber']} " : '') . ($propertyAddress['buildingName'] != '' ? "{$propertyAddress['buildingName']}, " : '') . $propertyAddress['address2']; $addressLine2 = $propertyAddress['address4']; $town = $propertyAddress['address5']; $postCode = $data['property_postcode']; if (empty($currentResidence->refereeDetails->address)) { $addressManager = new Manager_Core_Address(); $currentResidence->refereeDetails->address = $addressManager->createAddress(); } $currentResidence->refereeDetails->address->addressLine1 = $addressLine1; $currentResidence->refereeDetails->address->addressLine2 = $addressLine2; $currentResidence->refereeDetails->address->town = $town; $currentResidence->refereeDetails->address->postCode = $postCode; //Update progress. //And update... $referenceManager->updateReference($reference); }
public function saveData() { $session = new Zend_Session_Namespace('referencing_global'); $data = $this->getValues(); $referenceManager = new Manager_Referencing_Reference(); $reference = $referenceManager->getReference($session->referenceId); // Update the completion method (complete now, or email link to tenant). $reference->completionMethod = $data['completion_method']; // Update the reference subject. if (empty($reference->referenceSubject)) { $referenceSubjectManager = new Manager_Referencing_ReferenceSubject(); $reference->referenceSubject = $referenceSubjectManager->insertPlaceholder($session->referenceId); } // Reference subject name details if (empty($reference->referenceSubject->name)) { $nameManager = new Manager_Core_Name(); $reference->referenceSubject->name = $nameManager->createName(); } $reference->referenceSubject->name->title = $data['personal_title']; $reference->referenceSubject->name->firstName = $data['first_name']; $reference->referenceSubject->name->lastName = $data['last_name']; //Reference subject contact details if (empty($reference->referenceSubject->contactDetails)) { $contactDetailsManager = new Manager_Core_ContactDetails(); $reference->referenceSubject->contactDetails = $contactDetailsManager->createContactDetails(); } $reference->referenceSubject->contactDetails->email1 = $data['email']; //Misc details. $reference->referenceSubject->type = Model_Referencing_ReferenceSubjectTypes::TENANT; $reference->referenceSubject->shareOfRent = new Zend_Currency(array('value' => $data['share_of_rent'], 'precision' => 0)); //Product details. if (empty($reference->productSelection)) { $productSelectionManager = new Manager_Referencing_ProductSelection(); $reference->productSelection = $productSelectionManager->insertPlaceholder($session->referenceId); } $productDatasource = new Datasource_Referencing_Product(); $reference->productSelection->product = $productDatasource->getById($data['product_choice']); if (empty($data['product_duration'])) { $reference->productSelection->duration = 0; } else { $reference->productSelection->duration = $data['product_duration']; } // And update... $referenceManager->updateReference($reference); // Ensure the product selection by the user is updated in the session, ensuring correct // navigations... $session->productName = $reference->productSelection->product->key; }
public function saveData() { $session = new Zend_Session_Namespace('referencing_global'); $data = $this->getValues(); $referenceManager = new Manager_Referencing_Reference(); $reference = $referenceManager->getReference($session->referenceId); //Record the reference subject's personal details. if (empty($reference->referenceSubject->name)) { //If here then things are a bit weird - we should have the reference subject name //captured from an earlier form. $nameManager = new Manager_Core_Name(); $reference->referenceSubject->name = $nameManager->createName(); } $reference->referenceSubject->name->title = $data['personal_title']; $reference->referenceSubject->name->firstName = $data['first_name']; $reference->referenceSubject->name->middleName = $data['middle_name']; $reference->referenceSubject->name->lastName = $data['last_name']; $reference->referenceSubject->name->maidenName = $data['other_name']; //Reference subject contact details if (empty($reference->referenceSubject->contactDetails)) { $contactDetailsManager = new Manager_Core_ContactDetails(); $reference->referenceSubject->contactDetails = $contactDetailsManager->createContactDetails(); } $reference->referenceSubject->contactDetails->telephone1 = $data['telephone_day']; $reference->referenceSubject->contactDetails->telephone2 = $data['mobile_number']; $reference->referenceSubject->contactDetails->email1 = $data['email']; //Reference subject miscellaneous. $reference->referenceSubject->dob = new Zend_Date($data['tenancy_start_date'], Zend_Date::DATES); if ('Yes' == $data['has_adverse_credit']) { $reference->referenceSubject->hasAdverseCredit = true; } else { $reference->referenceSubject->hasAdverseCredit = false; } //Bank account details. Bank account details are optional. if (empty($data['bank_account_number']) || empty($data['bank_sortcode_number'])) { //No bank account details have been provided. if (!empty($reference->referenceSubject->bankAccount)) { //We have an existing bank account details record - delete this to reflect the //user input. $bankAccountManager = new Manager_Referencing_BankAccount(); $bankAccountManager->deleteBankAccount($reference->referenceSubject->bankAccount); } } else { if (empty($reference->referenceSubject->bankAccount)) { $bankAccountManager = new Manager_Referencing_BankAccount(); $reference->referenceSubject->bankAccount = $bankAccountManager->insertPlaceholder($session->referenceId); } $reference->referenceSubject->bankAccount->accountNumber = $data['bank_account_number']; $reference->referenceSubject->bankAccount->sortCode = $data['bank_sortcode_number']; //Run the bank account details through the validators. $reference->referenceSubject->bankAccount->isValidated = false; $bankManager = new Manager_Core_Bank(); if ($bankManager->isSortCodeValid($data['bank_sortcode_number'])) { if ($bankManager->isAccountNumberValid($data['bank_sortcode_number'], $data['bank_account_number'])) { $reference->referenceSubject->bankAccount->isValidated = true; } } } //Create a current residence record, if not already done so. Ensure the current residence record //reflects the residential status provided by the user. if (empty($reference->referenceSubject->residences)) { $residenceManager = new Manager_Referencing_Residence(); $residence = $residenceManager->insertPlaceholder($session->referenceId, Model_Referencing_ResidenceChronology::CURRENT); $residence->status = $data['residential_status']; $reference->referenceSubject->residences = array(); $reference->referenceSubject->residences[] = $residence; } else { //Locate the current residence record, and set the residential status accordingly. foreach ($reference->referenceSubject->residences as $residence) { if ($residence->chronology == Model_Referencing_ResidenceChronology::CURRENT) { $residence->status = $data['residential_status']; break; } } } //Create or locate the current occupation record. $occupationManager = new Manager_Referencing_Occupation(); if (empty($reference->referenceSubject->occupations)) { $isNew = true; $currentOccupation = $occupationManager->createNewOccupation($session->referenceId, Model_Referencing_OccupationChronology::CURRENT, Model_Referencing_OccupationImportance::FIRST); } else { $isNew = false; //Locate the current primary occupation record, and set the occupation type accordingly. $currentOccupation = $occupationManager->findSpecificOccupation($reference->referenceSubject->occupations, Model_Referencing_OccupationChronology::CURRENT, Model_Referencing_OccupationImportance::FIRST); } //Update the current occupation record to reflect the user inputs. $currentOccupation->type = $data['occupational_type']; $currentOccupation->income = new Zend_Currency(array('value' => $data['total_annual_income'], 'precision' => 0)); if ($data['occupation_will_change'] == 'No') { $currentOccupation->isPermanent = true; } else { $currentOccupation->isPermanent = false; } //Add the current occupation to the ReferenceSubject, if it is new. if ($isNew) { $reference->referenceSubject->occupations = array(); $reference->referenceSubject->occupations[] = $currentOccupation; } //Identify if a future occupation record is required. if (isset($data['is_future_employment_secured'])) { if ('Yes' == $data['is_future_employment_secured']) { //See if a future occupation record exists already. $futureOccupation = $occupationManager->findSpecificOccupation($reference->referenceSubject->occupations, Model_Referencing_OccupationChronology::FUTURE, Model_Referencing_OccupationImportance::FIRST); if (empty($futureOccupation)) { $createFutureOccupation = true; } else { $createFutureOccupation = false; } if ($createFutureOccupation) { $futureOccupation = $occupationManager->createNewOccupation($session->referenceId, Model_Referencing_OccupationChronology::FUTURE, Model_Referencing_OccupationImportance::FIRST); $futureOccupation->type = Model_Referencing_OccupationTypes::EMPLOYMENT; $reference->referenceSubject->occupations[] = $futureOccupation; } } else { //No future occupation record is required at this time, so ensure that //any existing are deleted. $futureOccupation = $occupationManager->findSpecificOccupation($reference->referenceSubject->occupations, Model_Referencing_OccupationChronology::FUTURE, Model_Referencing_OccupationImportance::FIRST); if (!empty($futureOccupation)) { $occupationManager->deleteOccupation($futureOccupation); } } } //Write the updates to the datasources. $referenceManager->updateReference($reference); }
/** * Saves the form data to the datastore. * * @return void */ public function saveData() { $session = new Zend_Session_Namespace('referencing_global'); $data = $this->getValues(); //Retrieve the main reference details. $referenceManager = new Manager_Referencing_Reference(); $reference = $referenceManager->getReference($session->referenceId); //Create a new PLL record if not already done so. if (empty($reference->propertyLease->prospectiveLandlord)) { $prospectiveLandlordManager = new Manager_Referencing_ProspectiveLandlord(); $reference->propertyLease->prospectiveLandlord = $prospectiveLandlordManager->insertPlaceholder($session->referenceId); } //Record the PLL's name if (empty($reference->propertyLease->prospectiveLandlord->name)) { $nameManager = new Manager_Core_Name(); $reference->propertyLease->prospectiveLandlord->name = $nameManager->createName(); } $reference->propertyLease->prospectiveLandlord->name->title = $data['personal_title']; $reference->propertyLease->prospectiveLandlord->name->firstName = $data['first_name']; $reference->propertyLease->prospectiveLandlord->name->lastName = $data['last_name']; //Record the PLL's contact details if (empty($reference->propertyLease->prospectiveLandlord->contactDetails)) { $contactDetailsManager = new Manager_Core_ContactDetails(); $reference->propertyLease->prospectiveLandlord->contactDetails = $contactDetailsManager->createContactDetails(); } $reference->propertyLease->prospectiveLandlord->contactDetails->telephone1 = $data['telephone_day']; $reference->propertyLease->prospectiveLandlord->contactDetails->telephone2 = $data['telephone_evening']; $reference->propertyLease->prospectiveLandlord->contactDetails->fax1 = $data['fax_number']; $reference->propertyLease->prospectiveLandlord->contactDetails->email1 = $data['email']; //Record the PLL's address. $postcodeManager = new Manager_Core_Postcode(); $propertyAddress = $postcodeManager->getPropertyByID($data['property_address'], false); $addressLine1 = ($propertyAddress['organisation'] != '' ? "{$propertyAddress['organisation']}, " : '') . ($propertyAddress['houseNumber'] != '' ? "{$propertyAddress['houseNumber']} " : '') . ($propertyAddress['buildingName'] != '' ? "{$propertyAddress['buildingName']}, " : '') . $propertyAddress['address2']; $addressLine2 = $propertyAddress['address4']; $town = $propertyAddress['address5']; $postCode = $data['property_postcode']; if (empty($reference->propertyLease->prospectiveLandlord->address)) { $addressManager = new Manager_Core_Address(); $reference->propertyLease->prospectiveLandlord->address = $addressManager->createAddress(); } $reference->propertyLease->prospectiveLandlord->address->addressLine1 = $addressLine1; $reference->propertyLease->prospectiveLandlord->address->addressLine2 = $addressLine2; $reference->propertyLease->prospectiveLandlord->address->town = $town; $reference->propertyLease->prospectiveLandlord->address->postCode = $postCode; //And update... both the reference and the PLL customer details, which are held in the //legacy datasources. $referenceManager->updateReference($reference); //Next, update the customer record if the user is a PLL. If the user is a reference subject, //then we do not want to overwrite the PLL (customer) details with the data they have //entered. if ($session->userType == Model_Referencing_ReferenceUserTypes::PRIVATE_LANDLORD) { //Retrieve the primary customer details - ugly I know. $session = new Zend_Session_Namespace('referencing_global'); $customerManager = new Manager_Referencing_Customer(); $customer = $customerManager->getCustomer($session->customerId); $customer->setTitle($data['personal_title']); $customer->setFirstName($data['first_name']); $customer->setLastName($data['last_name']); $customer->setTelephone(Model_Core_Customer::TELEPHONE1, $data['telephone_day']); $customer->setTelephone(Model_Core_Customer::TELEPHONE2, $data['telephone_evening']); $customer->setFax($data['fax_number']); $customer->setEmailAddress($data['email']); $customer->setAddressLine(Model_Core_Customer::ADDRESSLINE1, $addressLine1); $customer->setAddressLine(Model_Core_Customer::ADDRESSLINE2, $addressLine2); $customer->setAddressLine(Model_Core_Customer::ADDRESSLINE3, $town); $customer->setPostCode($postCode); $customerManager->updateCustomer($customer); } }
public function saveData() { $session = new Zend_Session_Namespace('referencing_global'); $data = $this->getValues(); $referenceManager = new Manager_Referencing_Reference(); $reference = $referenceManager->getReference($session->referenceId); //Derive the occupation chronology from the current flow item, so that we can locate //the relevant occupation to update. switch ($session->currentFlowItem) { case Model_Referencing_DataEntry_FlowItems::CURRENT_OCCUPATION: $chronology = Model_Referencing_OccupationChronology::CURRENT; $classification = Model_Referencing_OccupationImportance::FIRST; break; case Model_Referencing_DataEntry_FlowItems::SECOND_OCCUPATION: $chronology = Model_Referencing_OccupationChronology::CURRENT; $classification = Model_Referencing_OccupationImportance::SECOND; break; case Model_Referencing_DataEntry_FlowItems::FUTURE_OCCUPATION: $chronology = Model_Referencing_OccupationChronology::FUTURE; $classification = Model_Referencing_OccupationImportance::FIRST; break; } //Attept to locate the relevant occupation. $occupationManager = new Manager_Referencing_Occupation(); $thisOccupation = $occupationManager->findSpecificOccupation($reference->referenceSubject->occupations, $chronology, $classification); if (empty($thisOccupation)) { //The occupation to process does not exist, so create it first. $thisOccupation = $occupationManager->createNewOccupation($session->referenceId, $chronology, $classification); if (empty($reference->referenceSubject->occupations)) { $reference->referenceSubject->occupations = array(); } $reference->referenceSubject->occupations[] = $thisOccupation; } //Now update $thisOccupation with the occupational details provided by the ReferenceSubject. if (empty($thisOccupation->refereeDetails)) { $refereeManager = new Manager_Referencing_OccupationReferee(); $thisOccupation->refereeDetails = $refereeManager->createReferee($thisOccupation->id); } //Add general details. $thisOccupation->refereeDetails->organisationName = $data['company_name']; $thisOccupation->refereeDetails->position = $data['contact_position']; $thisOccupation->income = new Zend_Currency(array('value' => $data['income'], 'precision' => 0)); //Add the referee name if required. if (empty($thisOccupation->refereeDetails->name)) { $nameManager = new Manager_Core_Name(); $thisOccupation->refereeDetails->name = $nameManager->createName(); } $nameArray = preg_split("/\\s/", $data['contact_name']); if (count($nameArray) >= 2) { $thisOccupation->refereeDetails->name->firstName = array_shift($nameArray); $thisOccupation->refereeDetails->name->lastName = array_pop($nameArray); } else { if (count($nameArray) == 1) { $thisOccupation->refereeDetails->name->firstName = array_shift($nameArray); } } //Capture and process the referee address. $postcodeManager = new Manager_Core_Postcode(); $propertyAddress = $postcodeManager->getPropertyByID($data['property_address'], false); $addressLine1 = ($propertyAddress['organisation'] != '' ? "{$propertyAddress['organisation']}, " : '') . ($propertyAddress['houseNumber'] != '' ? "{$propertyAddress['houseNumber']} " : '') . ($propertyAddress['buildingName'] != '' ? "{$propertyAddress['buildingName']}, " : '') . $propertyAddress['address2']; $addressLine2 = $propertyAddress['address4']; $town = $propertyAddress['address5']; $postCode = $data['property_postcode']; if (empty($thisOccupation->refereeDetails->address)) { $addressManager = new Manager_Core_Address(); $thisOccupation->refereeDetails->address = $addressManager->createAddress(); } $thisOccupation->refereeDetails->address->addressLine1 = $addressLine1; $thisOccupation->refereeDetails->address->addressLine2 = $addressLine2; $thisOccupation->refereeDetails->address->town = $town; $thisOccupation->refereeDetails->address->postCode = $postCode; //Capture and process the referee contact details. if (empty($thisOccupation->refereeDetails->contactDetails)) { $contactDetailsManager = new Manager_Core_ContactDetails(); $thisOccupation->refereeDetails->contactDetails = $contactDetailsManager->createContactDetails(); } $thisOccupation->refereeDetails->contactDetails->telephone1 = $data['telephone_number']; $thisOccupation->refereeDetails->contactDetails->fax1 = $data['fax_number']; $thisOccupation->refereeDetails->contactDetails->email1 = $data['email']; if (!empty($data['tenancy_start_date'])) { $thisOccupation->startDate = new Zend_Date($data['tenancy_start_date'], Zend_Date::DATES); } if (!empty($data['is_permanent'])) { if ($data['is_permanent'] == 'Yes') { $thisOccupation->isPermanent = true; } else { $thisOccupation->isPermanent = false; } } //Now capture the optional details and insert into the occupation variables array. if (!empty($data['reference_number'])) { if (empty($thisOccupation->variables)) { $thisOccupation->variables = array(); } $thisOccupation->variables[Model_Referencing_OccupationVariables::PAYROLL_NUMBER] = $data['reference_number']; } if (!empty($data['position'])) { if (empty($thisOccupation->variables)) { $thisOccupation->variables = array(); } $thisOccupation->variables[Model_Referencing_OccupationVariables::POSITION] = $data['position']; } //Identify if a future occupation is applicable and required. if (!empty($data['will_change'])) { if ($data['will_change'] == 'Yes') { //If its going to change then we need to create a future employer record, if not already //done so. $futureOccupation = $occupationManager->findSpecificOccupation($reference->referenceSubject->occupations, Model_Referencing_OccupationChronology::FUTURE, Model_Referencing_OccupationImportance::FIRST); if (empty($futureOccupation)) { $createFutureOccupation = true; } else { $createFutureOccupation = false; } if ($createFutureOccupation) { $futureOccupation = $occupationManager->createNewOccupation($session->referenceId, Model_Referencing_OccupationChronology::FUTURE, Model_Referencing_OccupationImportance::FIRST); $futureOccupation->type = Model_Referencing_OccupationTypes::EMPLOYMENT; $reference->referenceSubject->occupations[] = $futureOccupation; } } else { //Delete any future employer records. $futureOccupation = $occupationManager->findSpecificOccupation($reference->referenceSubject->occupations, Model_Referencing_OccupationChronology::FUTURE, Model_Referencing_OccupationImportance::FIRST); if (!empty($futureOccupation)) { $occupationManager->deleteOccupation($futureOccupation); } } } //And update... $referenceManager->updateReference($reference); return $thisOccupation; }