/** * @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; }
public function sendAssignedLeaveNotification($obj, $action) { $mailObj = new LeaveRequests(); $mailObj->setLeaveRequestId($obj->getLeaveRequestId()); $mailObj->setLeaveStatus($obj->getLeaveStatus()); $mailObj->setLeaveComments($obj->getLeaveComments()); $mailObj->setEmployeeId($obj->getEmployeeId()); $mailNotificaton = new MailNotifications(); $mailNotificaton->setLeaveRequestObj($mailObj); $mailNotificaton->setAction($action); $result = $mailNotificaton->send(); return $result; }
/** * Pares delete data in the UI form * * @param mixed $postArr * @return Leave[] */ public function parseDeleteData($postArr) { $objLeave = null; if (isset($postArr['cmbStatus'])) { for ($i = 0; $i < count($postArr['cmbStatus']); $i++) { $tmpObj = new LeaveRequests(); $tmpObj->setLeaveRequestId($postArr['id'][$i]); $tmpObj->setLeaveComments($postArr['txtComment'][$i]); $tmpObj->setLeaveStatus($postArr['cmbStatus'][$i]); $objLeave[] = $tmpObj; } } return $objLeave; }