📄 leaverequests.php
字号:
$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 ($tmpLeaveArr[0]->getLeaveStatus() != Leave::LEAVE_STATUS_LEAVE_CANCELLED) { $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 ($tmpLeaveArr[$i]->getLeaveStatus() != Leave::LEAVE_STATUS_LEAVE_CANCELLED) { $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; } if (isset($fromDate) && !$skip) { if (strtotime($tmpLeaveRequestArr->getLeaveFromDate()) < strtotime($fromDate)) { $skip = true; } } if (isset($toDate) && !$skip) { $endDate = $tmpLeaveRequestArr->getLeaveToDate(); if (empty($endDate)) { $endDate = $tmpLeaveRequestArr->getLeaveFromDate(); } if (strtotime($endDate) > strtotime($toDate)) { $skip = true; } } if (!$skip) { if ($supervisor) { $tmpLeaveRequestArr->setEmployeeName("{$row[2]} {$row[4]}"); $tmpLeaveRequestArr->setEmployeeId($row[3]); } $objArr[] = $tmpLeaveRequestArr; } } } return $objArr; } /** * Apply leave for multiple days * */ public function applyLeaveRequest() { $res = $this->_addLeaveRequest(); $resQuta = $this->_addLeaveQuota(); if ($res && $resQuta) { $res = $this->_applyLeaves(); } return $res; } /** * Apply leave Quota multiple Years * */ private function _addLeaveQuota(){ $fromYearArray = explode("-" , $this->getLeaveFromDate()) ; $toYearArray = explode("-" , $this->getLeaveToDate()) ; if(trim($fromYearArray[0]) == trim($toYearArray[0])){ $leaveQuata = new LeaveQuota() ; $leaveQuata->setEmployeeId($this->getEmployeeId()); $leaveQuata->setLeaveTypeId($this->getLeaveTypeId()); $leaveQuata->setNoOfDaysAllotted(0); $leaveQuata->setYear(trim($fromYearArray[0])); if($leaveQuata->addLeaveQuotaAdmin()) return true ; else return false ; }else{ $leaveQuata = new LeaveQuota() ; $leaveQuata->setEmployeeId($this->getEmployeeId()); $leaveQuata->setLeaveTypeId($this->getLeaveTypeId()); $leaveQuata->setNoOfDaysAllotted(0); $leaveQuata->setYear(trim($fromYearArray[0])); $quotaFrom = $leaveQuata->addLeaveQuotaAdmin(); $leaveQuata->setYear(trim($toYearArray[0])); $quotaTo = $leaveQuata->addLeaveQuotaAdmin(); if(($quotaFrom) && ($quotaTo)) return true ; else return false ; } } /** * Does actual leave applying * */ private function _applyLeaves() { $from = strtotime($this->getLeaveFromDate()); $to = strtotime($this->getLeaveToDate()); $res = true; $days = $this->getLeaveLengthDays(); $hours = $this->getLeaveLengthHours(); for ($timeStamp=$from; $timeStamp<=$to; $timeStamp=$this->_incDate($timeStamp)) { $this->setLeaveDate(date('Y-m-d', $timeStamp)); $this->setLeaveLengthDays($days); $this->setLeaveLengthHours($hours); $res = $res && $this->_addLeave(); } return $res; } /** * Date increment * * @param int $timestamp */ private function _incDate($timestamp) { $timestamp+=60*60*24; return $timestamp; } /** * Adds Record to Leave Request * * @access private */ private function _addLeaveRequest() { $newId = UniqueIDGenerator::getInstance()->getNextID('hs_hr_leave_requests', 'leave_request_id'); $this->setLeaveRequestId($newId); $this->_getLeaveTypeName(); $this->setDateApplied(date('Y-m-d')); $arrRecordsList[0] = $this->getLeaveRequestId(); $arrRecordsList[1] = "'".$this->getLeaveTypeId()."'"; $arrRecordsList[2] = "'".$this->getLeaveTypeName()."'"; $arrRecordsList[3] = "'". $this->getDateApplied()."'"; $arrRecordsList[4] = "'". $this->getEmployeeId() . "'"; $arrTable = "`hs_hr_leave_requests`"; $sqlBuilder = new SQLQBuilder(); $query = $sqlBuilder->simpleInsert($arrTable, $arrRecordsList); $dbConnection = new DMLFunctions(); $result = $dbConnection -> executeQuery($query); return $result; } /** * * function _changeLeaveStatus, access is private, will not be documented * * @access private */ protected function _changeLeaveStatus() { $sqlBuilder = new SQLQBuilder(); $table = "`hs_hr_leave`"; $changeFields[0] = "`leave_status`"; $changeFields[1] = "`leave_comments`"; $changeValues[0] = $this->getLeaveStatus(); $changeValues[1] = "'".$this->getLeaveComments()."'"; $updateConditions[0] = "`leave_request_id` = ".$this->getLeaveRequestId(); $query = $sqlBuilder->simpleUpdate($table, $changeFields, $changeValues, $updateConditions); $dbConnection = new DMLFunctions(); $result = $dbConnection->executeQuery($query); if (isset($result) && (mysql_affected_rows() > 0)) { return true; }; return false; }}?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -