/**
  * Create an employee based on a job application.
  *
  * @param JobApplication $jobApplication Job Application to create the employee from.
  * @throws RecruitmentControllerException if there is an error when creating employee
  */
 public function createEmployeeFromApplication($jobApplication)
 {
     $empInfo = new EmpInfo();
     // main information
     $employeeId = $empInfo->getLastId();
     $empInfo->setEmployeeId($employeeId);
     $empInfo->setEmpLastName($jobApplication->getLastName());
     $empInfo->setEmpFirstName($jobApplication->getFirstName());
     $empInfo->setEmpMiddleName($jobApplication->getMiddleName());
     $result = $empInfo->addEmpMain();
     // contact information
     $empInfo->setEmpStreet1($jobApplication->getStreet1());
     $empInfo->setEmpStreet2($jobApplication->getStreet2());
     $empInfo->setEmpCity($jobApplication->getCity());
     $empInfo->setEmpProvince($jobApplication->getProvince());
     $empInfo->setEmpCountry($jobApplication->getCountry());
     $empInfo->setEmpZipCode($jobApplication->getZip());
     $empInfo->setEmpHomeTelephone($jobApplication->getPhone());
     $empInfo->setEmpMobile($jobApplication->getMobile());
     $empInfo->setEmpOtherEmail($jobApplication->getEmail());
     $result = $empInfo->updateEmpContact();
     // job information
     $vacancy = JobVacancy::getJobVacancy($jobApplication->getVacancyId());
     $empInfo->setEmpJobTitle($vacancy->getJobTitleCode());
     $empInfo->setEmpStatus(0);
     $empInfo->setEmpEEOCat(0);
     $empInfo->setEmpJoinedDate("null");
     $empInfo->setEmpTerminatedDate("null");
     $result = $empInfo->updateEmpJobInfo();
     return $empInfo->getEmpId();
 }
 /**
  * Send an email to the hiring manager informing of approval for hiring the applicant.
  *
  * @param JobApplication $jobApplication Job Application object
  * @param JobApplicationEvent $jobApplicationEvent Job Application Event object
  *
  * @return boolean True if mail sent, false otherwise
  */
 public function sendApprovalToHiringManager($jobApplication, $jobApplicationEvent)
 {
     $vacancy = JobVacancy::getJobVacancy($jobApplication->getVacancyId());
     $managerId = $vacancy->getManagerId();
     $email = $this->_getEmpAddress($managerId);
     $empName = $this->_getEmpName($managerId);
     $fromName = $jobApplicationEvent->getCreatorName();
     $subject = $this->_getTemplate(self::SUBJECT_DIRECTOR_APPROVE);
     $body = $this->_getTemplate(self::TEMPLATE_DIRECTOR_APPROVE);
     // Replace placeholders in subject and body
     $search = array(self::VARIABLE_JOB_TITLE, self::VARIABLE_TO, self::VARIABLE_APPLICANT_FIRSTNAME, self::VARIABLE_APPLICANT_MIDDLENAME, self::VARIABLE_APPLICANT_LASTNAME, self::VARIABLE_APPLICANT_STREET1, self::VARIABLE_APPLICANT_STREET2, self::VARIABLE_APPLICANT_CITY, self::VARIABLE_APPLICANT_PROVINCE, self::VARIABLE_APPLICANT_ZIP, self::VARIABLE_APPLICANT_COUNTRY, self::VARIABLE_APPLICANT_PHONE, self::VARIABLE_APPLICANT_MOBILE, self::VARIABLE_APPLICANT_EMAIL, self::VARIABLE_APPLICANT_QUALIFICATIONS, self::VARIABLE_APPROVE_NOTES, self::VARIABLE_FROM);
     $country = $this->_getCountryName($jobApplication->getCountry());
     $replace = array($vacancy->getJobTitleName(), $empName['first'], $jobApplication->getFirstName(), $jobApplication->getMiddleName(), $jobApplication->getLastName(), $jobApplication->getStreet1(), $jobApplication->getStreet2(), $jobApplication->getCity(), $jobApplication->getProvince(), $jobApplication->getZip(), $country, $jobApplication->getPhone(), $jobApplication->getMobile(), $jobApplication->getEmail(), $jobApplication->getQualifications(), $jobApplicationEvent->getNotes(), $fromName);
     $subject = str_replace($search, $replace, $subject);
     $body = str_replace($search, $replace, $body);
     /* Add tasks */
     $attachments = array();
     $creatorName = $fromName;
     $creatorEmail = $jobApplicationEvent->getCreatorEmail();
     $applicantName = $jobApplication->getFirstName() . ' ' . $jobApplication->getLastName();
     $applicantEmail = $jobApplication->getEmail();
     // Event time in 5 days
     $startTime = strtotime("+5 day", time());
     foreach ($this->onHireTasks as $task) {
         /* Create task */
         $summary = $task . "({$applicantName})";
         $description = $summary;
         $eventTime = date(LocaleUtil::STANDARD_TIMESTAMP_FORMAT, $startTime);
         // Next event in 1 hour
         $startTime = $startTime + 3600;
         $message = $this->_getTask($task, $description, $creatorName, $creatorEmail, $applicantName, $applicantEmail, $eventTime);
         $mailer = $this->_getMailer();
         $attachment = $mailer->createAttachment($message);
         $attachment->type = 'text/calendar';
         $attachment->filename = "{$task}.ics";
         $attachments[] = $attachment;
     }
     $notificationType = EmailNotificationConfiguration::EMAILNOTIFICATIONCONFIGURATION_NOTIFICATION_TYPE_HIRE_APPROVED;
     return $this->_sendMail($email, $subject, $body, $notificationType, $attachments);
 }