/** * 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); }
/** * 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; }