/** * * @param sfForm $form * @return boolean */ public function applyMoreThanAllowedForADay(LeaveParameterObject $leaveAssignmentData) { $fromTime = date('H:i:s', strtotime($leaveAssignmentData->getFromTime())); $toTime = date('H:i:s', strtotime($leaveAssignmentData->getToTime())); $totalDuration = 0; if ($leaveAssignmentData->getFromDate() == $leaveAssignmentData->getToDate()) { $totalDuration = $this->getLeaveRequestService()->getTotalLeaveDuration($leaveAssignmentData->getEmployeeNumber(), $leaveAssignmentData->getFromDate()); } if ($totalDuration + $leaveAssignmentData->getLeaveTotalTime() > $this->getWorkShiftDurationForEmployee($leaveAssignmentData->getEmployeeNumber())) { $dateRange = new DateRange(); $dateRange->setFromDate($leaveAssignmentData->getFromDate()); $dateRange->setToDate($leaveAssignmentData->getToDate()); $searchParameters['dateRange'] = $dateRange; $searchParameters['employeeFilter'] = $leaveAssignmentData->getEmployeeNumber(); $parameter = new ParameterObject($searchParameters); $leaveRequests = $this->getLeaveRequestService()->searchLeaveRequests($parameter); if (count($leaveRequests['list']) > 0) { foreach ($leaveRequests['list'] as $leaveRequest) { $this->overlapLeaves[] = $leaveRequest->getLeave(); } } return true; } else { return false; } }
/** * Checking for leave overlaps * @return bool */ public function hasOverlapLeave(LeaveParameterObject $leaveAssignmentData) { $fromTime = null; if (strlen($leaveAssignmentData->getFromTime()) > 0) { $fromTime = date('H:i:s', strtotime($leaveAssignmentData->getFromTime())); } $toTime = null; if (strlen($leaveAssignmentData->getToTime()) > 0) { $toTime = date('H:i:s', strtotime($leaveAssignmentData->getToTime())); } /* Find duplicate leaves */ $overlapLeave = $this->getLeaveRequestService()->getOverlappingLeave($leaveAssignmentData->getFromDate(), $leaveAssignmentData->getToDate(), $leaveAssignmentData->getEmployeeNumber(), $fromTime, $toTime); $this->setOverlapLeave($overlapLeave); return count($overlapLeave) !== 0; }