public function testSaveReview() { $dao = new PerformanceReviewDao(); $review = new PerformanceReview(); $review->setId(1); $review->setEmployeeNumber(1); $review = $dao->saveReview($review); $this->assertEquals(1, $review->getId()); }
/** * Save performance Review * @param $request * @return unknown_type */ public function executeSaveReview(sfWebRequest $request) { $this->form = new SaveReviewForm(array(), array(), true); /* Saving Performance Reviews */ if ($request->isMethod('post')) { /* Showing update form: Begins */ if ($request->getParameter('editReview') && count($request->getParameter('chkReview')) == 0) { $this->getUser()->setFlash('templateMessage', array('WARNING', __('Select a review to edit'))); $this->redirect('performance/viewReview'); } if ($request->getParameter('chkReview')) { $reviewIds = $request->getParameter('chkReview'); if (count($reviewIds) > 1) { $this->getUser()->setFlash('templateMessage', array('WARNING', __('Select only one review at a time for editing'))); $this->redirect('performance/viewReview'); } $performanceReviewService = $this->getPerformanceReviewService(); $review = $performanceReviewService->readPerformanceReview($reviewIds[0]); $this->clues = $this->getReviewSearchClues($review); return; } /* Showing update form: Ends */ $this->form->bind($request->getParameter($this->form->getName())); if ($this->form->isValid()) { $clues = $this->getReviewSearchClues($request, '-0'); $this->clues = $clues; if ($request->getParameter("hdnId-0")) { // Review ID $this->clues['id'] = $request->getParameter("hdnId-0"); } $employeeService = new EmployeeService(); $employee = $employeeService->getEmployee($clues['empId']); $empJobCode = $employee->getJobTitleCode(); $subDivisionId = $employee->getWorkStation(); /* Checking whether wrong employee */ if (!$this->_isCorrectEmployee($this->clues['empId'], $this->clues['empName'])) { $this->templateMessage = array('WARNING', __('No employee exists with this name')); return; } /* Checking whether wrong reviewer */ if (!$this->_isCorrectEmployee($this->clues['reviewerId'], $this->clues['reviewerName'])) { $this->templateMessage = array('WARNING', __('No reviewer exists with this name')); return; } if (empty($empJobCode)) { if (trim($request->getParameter("hdnId-0")) == "") { $this->templateMessage = array('WARNING', __('Failed to Add: No Job Title Assigned')); return; } $empJobCode = $this->getPerformanceReviewService()->readPerformanceReview($request->getParameter("hdnId-0"))->getJobTitleCode(); } $kpiService = $this->getKpiService(); $performanceKpiService = $this->getPerformanceKpiService(); $kpiList = $kpiService->getKpiForJobTitle($empJobCode); if (count($kpiList) == 0) { $this->templateMessage = array('WARNING', __('No Key Performance Indicators were found for the job title of this employee') . " " . '<a href="saveKpi">' . __("Define Now") . '</a>'); return; } $performanceReviewService = $this->getPerformanceReviewService(); if ($request->getParameter("hdnId-0")) { // Updating an existing one $review = $performanceReviewService->readPerformanceReview($request->getParameter("hdnId-0")); } else { // Adding a new one $review = new PerformanceReview(); } $xmlStr = $performanceKpiService->getXmlFromKpi($kpiService->getKpiForJobTitle($empJobCode)); $review->setEmployeeId($clues['empId']); $review->setReviewerId($request->getParameter("hdnReviewerId-0")); $review->setCreatorId($this->loggedUserId); $review->setJobTitleCode($empJobCode); $review->setSubDivisionId($subDivisionId); $review->setCreationDate(date('Y-m-d')); $localizationService = new LocalizationService(); $inputDatePattern = sfContext::getInstance()->getUser()->getDateFormat(); $review->setPeriodFrom(date("Y-m-d", strtotime($localizationService->convertPHPFormatDateToISOFormatDate($inputDatePattern, $request->getParameter("txtPeriodFromDate-0"))))); $review->setPeriodTo(date("Y-m-d", strtotime($localizationService->convertPHPFormatDateToISOFormatDate($inputDatePattern, $request->getParameter("txtPeriodToDate-0"))))); $review->setDueDate(date("Y-m-d", strtotime($localizationService->convertPHPFormatDateToISOFormatDate($inputDatePattern, $request->getParameter("txtDueDate-0"))))); $review->setState(PerformanceReview::PERFORMANCE_REVIEW_STATUS_SCHDULED); $review->setKpis($xmlStr); $performanceReviewService->savePerformanceReview($review); $performanceReviewService->informReviewer($review); $this->getUser()->setFlash('prClues', $clues); $actionResult = $request->getParameter("hdnId-0") ? __('updated') : __('added'); $this->templateMessage = array('SUCCESS', __(TopLevelMessages::SAVE_SUCCESS) . ' <a href="viewReview">' . __('View') . '</a>'); } } }
/** * * @return type */ public function saveForm($postData) { $formValues = $this->getValues(); $isSupervisorValid = true; $reviewers = array(); if ($postData['saveReview360Form']['supervisorReviewerId']) { $reviewers['supervisors'] = array($postData['saveReview360Form']['supervisorReviewerId']); } if ($formValues['reviewId'] > 0) { $review = $this->getPerformanceReviewService()->searchReview(array('id' => $formValues['reviewId'])); } else { $review = new PerformanceReview(); $isSupervisorValid = $this->isSupervisorValid($formValues['employeeId'], $postData['saveReview360Form']['supervisorReviewerId']); } if ($isSupervisorValid) { $review->setEmployeeNumber($formValues['employeeId']); $review->setWorkPeriodStart(date("Y-m-d", strtotime($formValues['workPeriodStartDate']))); $review->setWorkPeriodEnd(date("Y-m-d", strtotime($formValues['workPeriodEndDate']))); $review->setDueDate(date("Y-m-d", strtotime($formValues['dueDate']))); $employee = $this->getEmployeeService()->getEmployee($formValues['employeeId']); $review->setJobTitleCode($employee->getJobTitleCode()); $review->setDepartmentId($employee->getWorkStation()); $review->save(); $postData['reviewers'] = $reviewers; $review = $this->createReviewers($postData['reviewers'], $review); $review->save(); $this->setReview($review); if ($formValues['formAction'] == 'save') { $review->setStatusId(ReviewStatusInactive::getInstance()->getStatusId()); $review->save(); } else { if ($formValues['formAction'] == 'activate') { $review = $this->createRatings($review); $review->save(); $errorMessages = array(); $employee = $this->getEmployeeService()->getEmployee($this->getValue('employeeId')); if ($employee->getJobTitle()->getId() == null && $employee->getSubDivision()->getId() == null) { $errorMessages[] = __("Cannot activate review for employees who doesn't have Job Title and/or Sub-Division"); } if (!isset($postData['reviewers'])) { $errorMessages[] = __("Cannot activate review without reviewers"); } else { if (sizeof($review->getReviewerRating()) == 0) { $errorMessages[] = __("Cannot activate review without KPIs"); } } if (sizeof($errorMessages) == 0) { $review->setStatusId(ReviewStatusActivated::getInstance()->getStatusId()); $review->setActivatedDate(date("Y-m-d H:i:s")); $review->save(); return true; } else { $this->setTemplateMessage(implode("<br/>", $errorMessages)); $review->setStatusId(ReviewStatusInactive::getInstance()->getStatusId()); $review->save(); return false; } } } return true; } else { $errorMessages = array(); $errorMessages[] = __("Invalid Supervisor"); $this->setTemplateMessage(implode("<br/>", $errorMessages)); } }
/** * Save performance Review * @param $request * @return unknown_type */ public function executeSaveReview(sfWebRequest $request) { $reviewId = ''; $reviewId = $request->getParameter('reviewId'); !empty($reviewId) ? $this->reviewId = $reviewId : ''; if ($request->getParameter('redirect')) { $empName = $request->getParameter('empName'); $revName = $request->getParameter('reviewerName'); $empId = $request->getParameter('empId'); $revId = $request->getParameter('reviewerId'); $toDate = $request->getParameter('toDate'); $fromDate = $request->getParameter('fromDate'); $dueDate = $request->getParameter('dueDate'); $this->form = new SaveReviewForm(array(), array('redirect' => $request->getParameter('redirect'), 'reviewId' => $reviewId, 'empName' => $empName, 'empId' => $empId, 'reviewerName' => $revName, 'reviewerId' => $revId, 'toDate' => $toDate, 'fromDate' => $fromDate, 'dueDate' => $dueDate), true); } else { $this->form = new SaveReviewForm(array(), array('reviewId' => $reviewId), true); } /* Saving Performance Reviews */ if ($request->isMethod('post')) { /* Showing update form: Ends */ $this->form->bind($request->getParameter($this->form->getName())); if ($this->form->isValid()) { $reviewId = $this->form->getValue('reviewId'); $empWidget = $this->form->getValue('employeeName'); $revWidget = $this->form->getValue('reviewerName'); $employeeService = new EmployeeService(); $employee = $employeeService->getEmployee($empWidget['empId']); $empJobCode = $employee->getJobTitleCode(); $subDivisionId = $employee->getWorkStation(); if (empty($empJobCode)) { if (trim($reviewId) == "") { $this->getUser()->setFlash('warning', __('Failed to Add: No Job Title Assigned')); $fromDate = $this->form->getValue('to_date'); $toDate = $this->form->getValue('from_date'); $dueDate = $this->form->getValue('dueDate'); $formDataArray = array('redirect' => true, 'empName' => $empWidget['empName'], 'empId' => $empWidget['empId'], 'reviewerName' => $revWidget['empName'], 'reviewerId' => $revWidget['empId'], 'toDate' => $toDate, 'fromDate' => $fromDate, 'dueDate' => $dueDate); $this->redirect('performance/saveReview?' . http_build_query($formDataArray)); } $empJobCode = $this->getPerformanceReviewService()->readPerformanceReview($reviewId)->getJobTitleCode(); } $kpiService = $this->getKpiService(); $performanceKpiService = $this->getPerformanceKpiService(); $kpiList = $kpiService->getKpiForJobTitle($empJobCode); if (count($kpiList) == 0) { $this->noKpiDefined = true; return; } $performanceReviewService = $this->getPerformanceReviewService(); if (!empty($reviewId)) { // Updating an existing one $review = $performanceReviewService->readPerformanceReview($reviewId); } else { // Adding a new one $review = new PerformanceReview(); } $xmlStr = $performanceKpiService->getXmlFromKpi($kpiService->getKpiForJobTitle($empJobCode)); $review->setEmployeeId($empWidget['empId']); $review->setReviewerId($revWidget['empId']); $review->setCreatorId($this->loggedUserId); $review->setJobTitleCode($empJobCode); $review->setSubDivisionId($subDivisionId); $review->setCreationDate(date('Y-m-d')); $localizationService = new LocalizationService(); $inputDatePattern = sfContext::getInstance()->getUser()->getDateFormat(); $review->setPeriodFrom($this->form->getValue('from_date')); $review->setPeriodTo($this->form->getValue('to_date')); $review->setDueDate($this->form->getValue('dueDate')); $review->setState(PerformanceReview::PERFORMANCE_REVIEW_STATUS_SCHDULED); $review->setKpis($xmlStr); $performanceReviewService->savePerformanceReview($review); $performanceReviewService->informReviewer($review); $actionResult = !empty($reviewId) ? __('updated') : __('added'); $this->getUser()->setFlash('success', __(TopLevelMessages::SAVE_SUCCESS)); $this->redirect('performance/viewReview/mode/new'); } } }
/** * Sends an email to reviewer when a Performance Review is added. * * @param PerformanceReviewService $review * @return null */ public function informReviewer(PerformanceReview $review) { try { $reviewerEmail = $review->getReviewer()->getEmpWorkEmail(); if ($reviewerEmail != '') { $content = file_get_contents(sfConfig::get('sf_root_dir') . "/apps/orangehrm/modules/performance/templates/email/" . self::EMAIL_TEMPLATE_ADD_REVIEW); $varibles = array('#reviewerName' => $review->getReviewer()->getFirstName(), '#empName' => $review->getEmployee()->getFullName(), '#period' => set_datepicker_date_format($review->getPeriodFrom()) . ' ' . set_datepicker_date_format($review->getPeriodTo()), '#dueDate' => set_datepicker_date_format($review->getDueDate())); $mailBody = strtr($content, $varibles); $mailService = new EmailService(); $mailService->setMessageTo(array($reviewerEmail)); $mailService->setMessageFrom(array("admin@orangehrm")); $mailService->setMessageSubject("You Have Been Assigned a New Performance Review"); $mailService->setMessageBody($mailBody); @$mailService->sendEmail(); } return true; } catch (Exception $e) { throw new PerformanceServiceException($e->getMessage()); } }
/** * Update status of performance review * @param array $clues * @param array $offset * @param array $limit * @throws DaoException */ public function updatePerformanceReviewStatus(PerformanceReview $performanceReview, $status) { try { $q = Doctrine_Query::create()->update('PerformanceReview')->set("state='?'", $status)->where("id = ?", $performanceReview->getId()); $q->execute(); return true; } catch (Exception $e) { throw new DaoException($e->getMessage()); } }