/** * Get the role of the given user in relation to the given job application * * @param authorize $authObj authorize class representing logged in user * @param JobApplication Job Application relative to which roles are required * * @return int One of the ROLE_ constants defined in this class */ public function getRoleForApplication($authObj, $jobApplication) { if ($authObj->isAdmin()) { return self::ROLE_ADMIN; } if ($authObj->isManager() || $authObj->isOfferer()) { // Check if director $event = $jobApplication->getEventOfType(JobApplicationEvent::EVENT_SEEK_APPROVAL); if (!empty($event) && $event->getOwner() == $authObj->getEmployeeId()) { return self::ROLE_DIRECTOR; } // Check if hiring manager $vacancy = JobVacancy::getJobVacancy($jobApplication->getVacancyId()); if ($authObj->getEmployeeId() == $vacancy->getManagerId()) { return self::ROLE_HIRING_MANAGER; } // Check if interview 2 manager $event = $jobApplication->getEventOfType(JobApplicationEvent::EVENT_SCHEDULE_SECOND_INTERVIEW); if (!empty($event) && $event->getOwner() == $authObj->getEmployeeId()) { return self::ROLE_INTERVIEW2_MANAGER; } // Check if interview 1 manager $event = $jobApplication->getEventOfType(JobApplicationEvent::EVENT_SCHEDULE_FIRST_INTERVIEW); if (!empty($event) && $event->getOwner() == $authObj->getEmployeeId()) { return self::ROLE_INTERVIEW1_MANAGER; } return self::ROLE_OTHER_MANAGER; } if ($authObj->isDirector() || $authObj->isAcceptor()) { // Check if director $event = $jobApplication->getEventOfType(JobApplicationEvent::EVENT_SEEK_APPROVAL); if (!empty($event) && $event->getOwner() == $authObj->getEmployeeId()) { return self::ROLE_DIRECTOR; } return self::ROLE_OTHER_DIRECTOR; } return self::ROLE_OTHER; }
/** * 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 a task to the interviewing manager, giving details of scheduled interview * * @param JobApplicationEvent $jobApplicationEvent Job Application Event object * * @return boolean True if mail sent, false otherwise */ public function sendInterviewTaskToManager($jobApplicationEvent) { /* Get interview details */ $intManagerId = $jobApplicationEvent->getOwner(); if (empty($intManagerId)) { throw new RecruitmentMailNotifierException("Invalid parameters", RecruitmentMailNotifierException::INVALID_PARAMETER); } $intManagerEmail = $this->_getEmpAddress($intManagerId); if (empty($intManagerEmail)) { $this->_log("Interviewing manager {$intManagerId} does not have email address."); return false; } $intManagerName = $this->_getEmpName($intManagerId); $jobApplication = JobApplication::getJobApplication($jobApplicationEvent->getApplicationId()); $applicantName = $jobApplication->getFirstName() . ' ' . $jobApplication->getLastName(); $applicantEmail = $jobApplication->getEmail(); $creatorName = $jobApplicationEvent->getCreatorName(); $creatorEmail = $jobApplicationEvent->getCreatorEmail(); $interviewTime = $jobApplicationEvent->getEventTime(); $vacancy = JobVacancy::getJobVacancy($jobApplication->getVacancyId()); /* Get summary and description from templates */ $subject = $this->_getTemplate(self::SUBJECT_INTERVIEW_MANAGER_TASK); $body = $this->_getTemplate(self::TEMPLATE_INTERVIEW_MANAGER_TASK); // 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_INTERVIEW_NOTES); $country = $this->_getCountryName($jobApplication->getCountry()); $replace = array($vacancy->getJobTitleName(), $intManagerName['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()); $summary = str_replace($search, $replace, $subject); $description = str_replace($search, $replace, $body); /* Create task */ $message = $this->_getTask($summary, $description, $creatorName, $creatorEmail, $applicantName, $applicantEmail, $interviewTime); $mailer = $this->_getMailer(); $attachment = $mailer->createAttachment($message); $attachment->type = 'text/calendar'; $attachment->filename = 'interview.ics'; /* Send Email with task attached */ $to = "{$intManagerName['first']} {$intManagerName['last']}<{$intManagerEmail}>"; $body = ''; $notificationType = null; $attachments = array($attachment); $subject = $summary; $this->_sendMail($to, $subject, $body, $notificationType, $attachments); }
/** * Test case for createEmployeeFromApplication */ public function testCreateEmployeeFromApplication() { $jobApplication = JobApplication::getJobApplication(1); $empInfo = new EmpInfo(); $before = $empInfo->countEmployee(); $recController = new RecruitmentController(); $empNum = $recController->createEmployeeFromApplication($jobApplication); $this->assertNotNull($empNum); // check employee count increased by 1 $after = $empInfo->countEmployee(); $this->assertEquals($before + 1, $after); // verify employee main details $empMain = $empInfo->filterEmpMain($empNum); $this->assertTrue(isset($empMain[0])); $this->assertEquals($empNum, $empMain[0][0]); $this->assertEquals($jobApplication->getLastName(), $empMain[0][1]); $this->assertEquals($jobApplication->getFirstName(), $empMain[0][2]); $this->assertEquals($jobApplication->getMiddleName(), $empMain[0][3]); // check that empId saved as well. $employeeId = str_pad($empNum, $empInfo->getEmployeeIdLength(), "0", STR_PAD_LEFT); $this->assertEquals($employeeId, $empMain[0][5]); // verify employee contact details $empContact = $empInfo->filterEmpContact($empNum); $this->assertTrue(isset($empContact[0])); $this->assertEquals($empNum, $empMain[0][0]); $this->assertEquals($jobApplication->getStreet1(), $empContact[0][1]); $this->assertEquals($jobApplication->getStreet2(), $empContact[0][2]); $this->assertEquals($jobApplication->getCity(), $empContact[0][3]); $this->assertEquals($jobApplication->getCountry(), $empContact[0][4]); $this->assertEquals($jobApplication->getProvince(), $empContact[0][5]); $this->assertEquals($jobApplication->getZip(), $empContact[0][6]); // Phone saved as home telephone $this->assertEquals($jobApplication->getPhone(), $empContact[0][7]); $this->assertEquals($jobApplication->getMobile(), $empContact[0][8]); // Email stored as other email. $this->assertEquals($jobApplication->getEmail(), $empContact[0][11]); // Job title $empJobInfo = $empInfo->filterEmpJobInfo($empNum); $this->assertTrue(isset($empJobInfo[0])); $this->assertEquals($empNum, $empJobInfo[0][0]); $vacancy = JobVacancy::getJobVacancy($jobApplication->getVacancyId()); $this->assertEquals($vacancy->getJobTitleCode(), $empJobInfo[0][2]); }
/** * Test the getJobVacancy function */ public function testGetJobVacancy() { // unknown id $vacancy = JobVacancy::getJobVacancy(383); $this->assertNull($vacancy); // invalid id try { $vacancy = JobVacancy::getJobVacancy('7da'); $this->fail('Should throw exception'); } catch (JobVacancyException $e) { } // available vacancy $vacancy = JobVacancy::getJobVacancy(2); $this->assertNotNull($vacancy); $expected = $this->jobVacancies[2]; $this->assertTrue($expected == $vacancy); }