Esempio n. 1
0
 /**
  * Fetches the leaves of the leave request in the object
  *
  */
 private function _preFetchLeaves()
 {
     $leaveObj = new Leave();
     $leaveRequestObj = $this->getLeaveRequestObj();
     $leaveObjs = $leaveObj->retrieveLeave($leaveRequestObj->getLeaveRequestId());
     $this->setLeaveObjs($leaveObjs);
 }
Esempio n. 2
0
 /**
  * Display leave information
  *
  * @param boolean $admin Show admin view or ess user view
  * @param Exception $exception Exception class (used to display any errors from previous apply/assign)
  */
 public function displayLeaveInfo($admin = false, $exception = null)
 {
     $authorizeObj = $this->authorize;
     if ($admin) {
         if ($authorizeObj->getIsAdmin() == 'Yes') {
             $empObj = new EmpInfo();
             $tmpObjs[0] = array(true);
         } else {
             if ($authorizeObj->isSupervisor()) {
                 $empRepToObj = new EmpRepTo();
                 $tmpObjs[0] = $empRepToObj->getEmpSubDetails($authorizeObj->getEmployeeId());
             }
         }
         $roles = array(authorize::AUTHORIZE_ROLE_ADMIN, authorize::AUTHORIZE_ROLE_SUPERVISOR);
         $role = $authorizeObj->firstRole($roles);
         $previousLeave = null;
         if (isset($_GET['id'])) {
             $leaveObj = new Leave();
             $previousLeaves = $leaveObj->retrieveLeave($_GET['id']);
             $previousLeave = $previousLeaves[0];
             if ($authorizeObj->getIsAdmin() != 'Yes' && $authorizeObj->isSupervisor() && !$authorizeObj->isTheSupervisor($previousLeave->getEmployeeId())) {
                 $previousLeave = null;
             }
         }
         $this->setId($_SESSION['empID']);
         $tmpObj = new LeaveType();
         $tmpObjs[1] = $tmpObj->fetchLeaveTypes();
         $tmpObjs[2] = $role;
         $tmpObjs[3] = $previousLeave;
         $tmpObjs['allEmpWorkshits'] = Workshift::getWorkshiftForAllEmployees();
     } else {
         $this->setId($_SESSION['empID']);
         $tmpObj = new LeaveQuota();
         $tmpObj->setYear(date('Y'));
         $tmpObjs[1] = $tmpObj->fetchLeaveQuota($this->getId());
         $workShift = Workshift::getWorkshiftForEmployee($this->getId());
         $shiftLength = isset($workShift) ? $workShift->getHoursPerDay() : Leave::LEAVE_LENGTH_FULL_DAY;
         $tmpObjs['shiftLength'] = $shiftLength;
     }
     $this->setObjLeave($tmpObjs);
     $path = "/templates/leave/leaveApply.php";
     if (!empty($exception)) {
         $tmpObjs['exception'] = $exception;
     }
     $template = new TemplateMerger($tmpObjs, $path);
     $template->display();
 }
 /**
  * @param $filterLeaveStatus array Array of leave statuses to include. If set, only
  *                                 leaves with these statuses are returned.
  * @param $fromDate Date Start date to search
  * @param $toDate Date End date to search
  */
 protected function _buildObjArr($result, $supervisor = false, $filterLeaveStatus = null, $fromDate = null, $toDate = null)
 {
     $objArr = null;
     while ($row = mysql_fetch_row($result)) {
         $tmpLeaveRequestArr = new LeaveRequests();
         $tmpLeaveRequestArr->setLeaveTypeName($row[0]);
         $tmpLeaveRequestArr->setLeaveRequestId($row[1]);
         $tmpLeave = new Leave();
         $tmpLeaveArr = $tmpLeave->retrieveLeave($row[1]);
         $noOfDays = 0;
         $hours = 0;
         if (isset($tmpLeaveArr) && !empty($tmpLeaveArr)) {
             $totalLeaves = count($tmpLeaveArr);
             $tmpLeaveRequestArr->setLeaveFromDate($tmpLeaveArr[0]->getLeaveDate());
             if (isset($filterLeaveStatus)) {
                 if (in_array($tmpLeaveArr[0]->getLeaveStatus(), $filterLeaveStatus)) {
                     $noOfDays = $tmpLeaveArr[0]->getLeaveLengthDays();
                     $hours = $tmpLeaveArr[0]->getLeaveLengthHours();
                 }
             } else {
                 $noOfDays = $tmpLeaveArr[0]->getLeaveLengthDays();
                 $hours = $tmpLeaveArr[0]->getLeaveLengthHours();
             }
             if ($tmpLeaveArr[0]->getStartTime() != null && $tmpLeaveArr[0]->getEndTime() != null) {
                 $tmpLeaveRequestArr->setStartTime($tmpLeaveArr[0]->getStartTime());
                 $tmpLeaveRequestArr->setEndTime($tmpLeaveArr[0]->getEndTime());
             }
             if ($totalLeaves > 1) {
                 $tmpLeaveRequestArr->setLeaveToDate($tmpLeaveArr[$totalLeaves - 1]->getLeaveDate());
                 $status = $tmpLeaveArr[0]->getLeaveStatus();
                 $comments = $tmpLeaveArr[0]->getLeaveComments();
                 $commentsDiffer = false;
                 for ($i = 1; $i < $totalLeaves; $i++) {
                     if ($tmpLeaveArr[$i]->getLeaveLengthHours() > 0) {
                         if (isset($filterLeaveStatus)) {
                             if (in_array($tmpLeaveArr[$i]->getLeaveStatus(), $filterLeaveStatus)) {
                                 $noOfDays += $tmpLeaveArr[$i]->getLeaveLengthDays();
                                 $hours += $tmpLeaveArr[$i]->getLeaveLengthHours();
                             }
                         } else {
                             $noOfDays += $tmpLeaveArr[$i]->getLeaveLengthDays();
                             $hours += $tmpLeaveArr[$i]->getLeaveLengthHours();
                         }
                         if ($status != $tmpLeaveArr[$i]->getLeaveStatus()) {
                             $status = self::LEAVEREQUESTS_MULTIPLESTATUSES;
                         }
                     }
                     if ($comments != $tmpLeaveArr[$i]->getLeaveComments()) {
                         $commentsDiffer = true;
                     }
                 }
                 $tmpLeaveRequestArr->setLeaveComments($comments);
                 $tmpLeaveRequestArr->setCommentsDiffer($commentsDiffer);
                 $tmpLeaveRequestArr->setLeaveStatus($status);
             } else {
                 $tmpLeaveRequestArr->setLeaveStatus($tmpLeaveArr[0]->getLeaveStatus());
                 $tmpLeaveRequestArr->setLeaveComments($tmpLeaveArr[0]->getLeaveComments());
             }
             $tmpLeaveRequestArr->setNoDays(number_format($noOfDays, 2));
             $tmpLeaveRequestArr->setLeaveLengthHours(number_format($hours, 2));
             /* Check that at least one leave in the list contains a status in
              * $filterLeaveStatus.
              */
             $skip = false;
             if (isset($filterLeaveStatus)) {
                 $skip = true;
                 for ($i = 0; $i < $totalLeaves; $i++) {
                     if (in_array($tmpLeaveArr[$i]->getLeaveStatus(), $filterLeaveStatus)) {
                         $skip = false;
                         break;
                     }
                 }
             } else {
                 if ($supervisor && $tmpLeaveRequestArr->getLeaveStatus() == self::LEAVE_STATUS_LEAVE_TAKEN) {
                     $skip = true;
                 }
             }
             // Find the leave requets for the given data range
             if (isset($toDate) && !$skip) {
                 $endDate = $tmpLeaveRequestArr->getLeaveToDate();
                 if (empty($endDate)) {
                     $endDate = $tmpLeaveRequestArr->getLeaveFromDate();
                 } else {
                     $endDate = $tmpLeaveRequestArr->getLeaveToDate();
                 }
                 if (strtotime($endDate) >= strtotime($fromDate) && strtotime($tmpLeaveRequestArr->getLeaveFromDate()) <= strtotime($toDate)) {
                     $skip = false;
                 } else {
                     $skip = true;
                 }
             }
             if (!$skip) {
                 if ($supervisor) {
                     $tmpLeaveRequestArr->setEmployeeName("{$row[2]} {$row[4]}");
                     $tmpLeaveRequestArr->setEmployeeId($row[3]);
                 }
                 $objArr[] = $tmpLeaveRequestArr;
             }
         }
     }
     return $objArr;
 }