コード例 #1
0
 /**
  *
  * @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;
     }
 }
コード例 #2
0
 /**
  * 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;
 }