/** * Testing getCandidateRecordsCount */ public function testGetCandidateRecordsCount() { $searchParam = new CandidateSearchParameters(); $searchParam->setJobTitleCode('JOB002'); $candidateService = $this->getMock('CandidateService', array('buildSearchCountQuery')); $candidateService->expects($this->once())->method('buildSearchCountQuery')->with($searchParam)->will($this->returnValue('searchCountQuery')); $candidateDao = $this->getMock('CandidateDao', array('getCandidateRecordsCount')); $candidateDao->expects($this->once())->method('getCandidateRecordsCount')->with('searchCountQuery')->will($this->returnValue(4)); $candidateService->setCandidateDao($candidateDao); $result = $candidateService->getCandidateRecordsCount($searchParam); $this->assertEquals($result, 4); }
/** * Testing getCandidateList when Hiring manager, Candidate name and keywords are provided */ public function testGetCandidateListForHiringManagerCandidateAndKeywords() { $searchParam = new CandidateSearchParameters(); $searchParam->setHiringManagerId(1); $searchParam->setCandidateName('Yasitha Pandi'); $searchParam->setKeywords("java,oracle"); $candidateVacancyList = $this->candidateDao->searchCandidates($this->candidateDao->buildSearchQuery($searchParam)); $this->assertTrue($candidateVacancyList[0] instanceof CandidateSearchParameters); }
/** * * @param <type> $request */ public function execute($request) { $userRoleManager = $this->getContext()->getUserRoleManager(); $requiredPermissions = array(BasicUserRoleManager::PERMISSION_TYPE_DATA_GROUP => array('recruitment_candidates' => new ResourcePermission(true, false, false, false))); $allowedVacancyList = $userRoleManager->getAccessibleEntityIds('Vacancy', null, null, array(), array(), $requiredPermissions); $usrObj = $this->getUser()->getAttribute('user'); $allowedCandidateList = $usrObj->getAllowedCandidateList(); $allowedCandidateListToDelete = $usrObj->getAllowedCandidateListToDelete(); $this->candidaatePermissions = $this->getDataGroupPermissions('recruitment_candidates'); $isAdmin = $usrObj->isAdmin(); if (!($usrObj->isAdmin() || $usrObj->isHiringManager() || $usrObj->isInterviewer() || $this->candidaatePermissions->canRead())) { $this->redirect('pim/viewPersonalDetails'); } $param = array('allowedCandidateList' => $allowedCandidateList, 'allowedVacancyList' => $allowedVacancyList, 'allowedCandidateListToDelete' => $allowedCandidateListToDelete); list($this->messageType, $this->message) = $this->getUser()->getFlash('candidateListMessageItems'); $candidateId = $request->getParameter('candidateId'); $sortField = $request->getParameter('sortField'); $sortOrder = $request->getParameter('sortOrder'); $isPaging = $request->getParameter('pageNo'); $pageNumber = $isPaging; if (!is_null($this->getUser()->getAttribute('pageNumber')) && !($pageNumber >= 1)) { $pageNumber = $this->getUser()->getAttribute('pageNumber'); } $this->getUser()->setAttribute('pageNumber', $pageNumber); $searchParam = new CandidateSearchParameters(); $searchParam->setIsAdmin($isAdmin); $searchParam->setEmpNumber($usrObj->getEmployeeNumber()); $noOfRecords = $searchParam->getLimit(); $offset = $pageNumber >= 1 ? ($pageNumber - 1) * $noOfRecords : ($request->getParameter('pageNo', 1) - 1) * $noOfRecords; $searchParam->setAdditionalParams($request->getParameter('additionalParams', array())); $this->setForm(new viewCandidatesForm(array(), $param, true)); if (!empty($sortField) && !empty($sortOrder) || $isPaging > 0 || $candidateId > 0) { if ($this->getUser()->hasAttribute('searchParameters')) { $searchParam = $this->getUser()->getAttribute('searchParameters'); $this->form->setDefaultDataToWidgets($searchParam); } $searchParam->setSortField($sortField); $searchParam->setSortOrder($sortOrder); } else { $this->getUser()->setAttribute('searchParameters', $searchParam); $offset = 0; $pageNumber = 1; } $searchParam->setAllowedCandidateList($allowedCandidateList); $searchParam->setAllowedVacancyList($allowedVacancyList); $searchParam->setOffset($offset); $candidates = $this->getCandidateService()->searchCandidates($searchParam); if ($this->candidaatePermissions->canRead()) { $this->_setListComponent($usrObj, $candidates, $noOfRecords, $searchParam, $pageNumber, $this->candidaatePermissions); } $params = array(); $this->parmetersForListCompoment = $params; if (empty($isPaging)) { if ($request->isMethod('post')) { $pageNumber = 1; $searchParam->setOffset(0); $this->getUser()->setAttribute('pageNumber', $pageNumber); $this->form->bind($request->getParameter($this->form->getName())); if ($this->form->isValid()) { $srchParams = $this->form->getSearchParamsBindwithFormData($searchParam); $this->getUser()->setAttribute('searchParameters', $srchParams); $candidates = $this->getCandidateService()->searchCandidates($srchParams); $this->_setListComponent($usrObj, $candidates, $noOfRecords, $searchParam, $pageNumber, $this->candidaatePermissions); } } } }
/** * * @param CandidateSearchParameters $searchParam */ public function setDefaultDataToWidgets(CandidateSearchParameters $searchParam) { $newSearchParam = new CandidateSearchParameters(); $this->setDefault('jobTitle', $searchParam->getJobTitleCode()); $this->setDefault('jobVacancy', $searchParam->getVacancyId()); $this->setDefault('hiringManager', $searchParam->getHiringManagerId()); $this->setDefault('status', $searchParam->getStatus()); $this->setDefault('selectedCandidate', $searchParam->getCandidateId()); $this->setDefault('modeOfApplication', $searchParam->getModeOfApplication()); $displayFromDate = $searchParam->getFromDate() == $newSearchParam->getFromDate() ? "" : $searchParam->getFromDate(); $displayToDate = $searchParam->getToDate() == $newSearchParam->getToDate() ? "" : $searchParam->getToDate(); $this->setDefault('from_date', $displayFromDate); $this->setDefault('to_date', $displayToDate); $this->setDefault('keywords', $searchParam->getKeywords()); $this->setDefault('candidateName', $searchParam->getCandidateName()); }
/** * Check that search works for a candidate name that has leading/trailing spaces (due to a bug in jobs.php). * UI will display the trimmed version and pass the trimmed version to the search function. * * eg: Name in DB (quoted here to show spaces): ' John ', ' D ', ' Conner' * search method gets 'John D Conner' and has to compare it with the values in the db. * */ public function testGetCandidateListForCandidateNameWithSpaces() { $searchParam = new CandidateSearchParameters(); $searchParam->setCandidateName('John Denis Connor'); $searchParam->setCandidateStatus(JobCandidate::ACTIVE); $searchQuery = $this->candidateDao->buildSearchQuery($searchParam); $candidateVacancyList = $this->candidateDao->searchCandidates($searchQuery); $this->assertEquals(1, count($candidateVacancyList)); $this->assertTrue($candidateVacancyList[0] instanceof CandidateSearchParameters); $this->assertEquals(11, $candidateVacancyList[0]->getCandidateId()); }
/** * * @param <type> $request */ public function execute($request) { $usrObj = $this->getUser()->getAttribute('user'); $allowedCandidateList = $usrObj->getAllowedCandidateList(); $allowedVacancyList = $usrObj->getAllowedVacancyList(); $allowedCandidateListToDelete = $usrObj->getAllowedCandidateListToDelete(); $isAdmin = $usrObj->isAdmin(); if (!($usrObj->isAdmin() || $usrObj->isHiringManager() || $usrObj->isInterviewer())) { $this->redirect('pim/viewPersonalDetails'); } $param = array('allowedCandidateList' => $allowedCandidateList, 'allowedVacancyList' => $allowedVacancyList, 'allowedCandidateListToDelete' => $allowedCandidateListToDelete); list($this->messageType, $this->message) = $this->getUser()->getFlash('candidateListMessageItems'); $candidateId = $request->getParameter('candidateId'); $sortField = $request->getParameter('sortField'); $sortOrder = $request->getParameter('sortOrder'); $isPaging = $request->getParameter('pageNo'); $pageNumber = $isPaging; if (!is_null($this->getUser()->getAttribute('pageNumber')) && !($pageNumber >= 1)) { $pageNumber = $this->getUser()->getAttribute('pageNumber'); } $this->getUser()->setAttribute('pageNumber', $pageNumber); $searchParam = new CandidateSearchParameters(); $searchParam->setIsAdmin($isAdmin); $searchParam->setEmpNumber($request->getParameter('referralId')); $searchParam->setReferralName($request->getParameter('referralName')); $noOfRecords = $searchParam->getLimit(); $offset = $pageNumber >= 1 ? ($pageNumber - 1) * $noOfRecords : ($request->getParameter('pageNo', 1) - 1) * $noOfRecords; $searchParam->setAdditionalParams($request->getParameter('additionalParams', array())); $this->setForm(new viewCandidatesForm(array(), $param, true)); if (!empty($sortField) && !empty($sortOrder) || $isPaging > 0 || $candidateId > 0) { if ($this->getUser()->hasAttribute('searchParameters')) { $searchParam = $this->getUser()->getAttribute('searchParameters'); $this->form->setDefaultDataToWidgets($searchParam); } $searchParam->setSortField($sortField); $searchParam->setSortOrder($sortOrder); } else { $this->getUser()->setAttribute('searchParameters', $searchParam); $offset = 0; $pageNumber = 1; } $searchParam->setAllowedCandidateList($allowedCandidateList); $searchParam->setAllowedVacancyList($allowedVacancyList); $searchParam->setOffset($offset); $candidates = $this->getCandidateService()->searchCandidates($searchParam); $this->_setListComponent($usrObj, $candidates, $noOfRecords, $searchParam, $pageNumber); $params = array(); $this->parmetersForListCompoment = $params; if (empty($isPaging)) { if ($request->isMethod('post')) { $pageNumber = 1; $searchParam->setOffset(0); $this->getUser()->setAttribute('pageNumber', $pageNumber); $this->form->bind($request->getParameter($this->form->getName())); if ($this->form->isValid()) { $srchParams = $this->form->getSearchParamsBindwithFormData($searchParam); $this->getUser()->setAttribute('searchParameters', $srchParams); $candidates = $this->getCandidateService()->searchCandidates($srchParams); $this->_setListComponent($usrObj, $candidates, $noOfRecords, $searchParam, $pageNumber); } } } }
/** * @param CandidateSearchParameters $paramObject * @return string */ private function _buildAdditionalWhereClauses(CandidateSearchParameters $paramObject) { $allowedCandidateList = $paramObject->getAllowedCandidateList(); $jobTitleCode = $paramObject->getJobTitleCode(); $jobVacancyId = $paramObject->getVacancyId(); $hiringManagerId = $paramObject->getHiringManagerId(); $status = $paramObject->getStatus(); $allowedVacancyList = $paramObject->getAllowedVacancyList(); $isAdmin = $paramObject->getIsAdmin(); $empNumber = $paramObject->getEmpNumber(); $whereClause = ''; $whereFilters = array(); if ($allowedVacancyList != null && !$isAdmin) { $this->_addAdditionalWhereClause($whereFilters, 'jv.id', '(' . implode(',', $allowedVacancyList) . ')', 'IN'); } if ($allowedCandidateList != null && !$isAdmin) { $this->_addAdditionalWhereClause($whereFilters, 'jc.id', '(' . implode(',', $allowedCandidateList) . ')', 'IN'); } if (!empty($jobTitleCode) || !empty($jobVacancyId) || !empty($hiringManagerId) || !empty($status)) { $this->_addAdditionalWhereClause($whereFilters, 'jv.status', $paramObject->getVacancyStatus()); } $this->_addAdditionalWhereClause($whereFilters, 'jv.job_title_code', $paramObject->getJobTitleCode()); $this->_addAdditionalWhereClause($whereFilters, 'jv.id', $paramObject->getVacancyId()); $this->_addAdditionalWhereClause($whereFilters, 'jv.hiring_manager_id', $paramObject->getHiringManagerId()); $this->_addAdditionalWhereClause($whereFilters, 'jcv.status', $paramObject->getStatus()); $this->_addCandidateNameClause($whereFilters, $paramObject); $this->_addAdditionalWhereClause($whereFilters, 'jc.mode_of_application', $paramObject->getModeOfApplication()); $this->_addAdditionalWhereClause($whereFilters, 'jc.added_person', $paramObject->getEmpNumber()); $whereClause .= count($whereFilters) > 0 ? ' AND ' . implode('AND ', $whereFilters) : ''; // if($paramObject->getHiringManagerId() != null){ // $whereClause .= " AND jv.hiring_manager_id = ".$paramObject->getHiringManagerId()." OR jv.hiring_manager1_id = ".$paramObject->getHiringManagerId(); // } if ($empNumber != null) { $whereClause .= " OR jc.id NOT IN (SELECT ojcv.candidate_id FROM ohrm_job_candidate_vacancy ojcv) "; } if (!empty($status)) { $whereClause .= " AND NOT ISNULL(jcv.status)"; } return $whereClause; }