public function testSaveReview()
 {
     $dao = new PerformanceReviewDao();
     $review = new PerformanceReview();
     $review->setId(1);
     $review->setEmployeeNumber(1);
     $review = $dao->saveReview($review);
     $this->assertEquals(1, $review->getId());
 }
示例#2
0
 /**
  * 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>');
         }
     }
 }
示例#3
0
 /**
  *
  * @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));
     }
 }
示例#4
0
 /**
  * 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());
     }
 }
示例#6
0
 /**
  * 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());
     }
 }