public function getTotalTime() { $start = $this->date_start . " 00:00:00"; $end = $this->date_end . " 23:59:59"; $timeEntry = new EmployeeTimeEntry(); $list = $timeEntry->Find("employee = ? and ((date_start >= ? and date_start <= ?) or (date_end >= ? and date_end <= ?))", array($this->employee, $start, $end, $start, $end)); $seconds = 0; foreach ($list as $entry) { $secondsTemp = strtotime($entry->date_end) - strtotime($entry->date_start); if ($secondsTemp < 0) { $secondsTemp = 0; } $seconds += $secondsTemp; } $totMinutes = round($seconds / 60); $minutes = $totMinutes % 60; $hours = ($totMinutes - $minutes) / 60; return CalendarTools::addLeadingZero($hours) . ":" . CalendarTools::addLeadingZero($minutes); }
public function getLeavesForMeAndSubordinates($req) { $req->start = gmdate("Y-m-d", $req->start); $req->end = gmdate("Y-m-d", $req->end); $shareCalendar = $this->baseService->settingsManager->getSetting("Leave: Share Calendar to Whole Company"); $map = json_decode('{"employee":["Employee","id","first_name+last_name"],"leave_type":["LeaveType","id","name"]}'); $employee = $this->baseService->getElement('Employee', $this->getCurrentProfileId(), null, true); if ($shareCalendar != "1") { $subordinate = new Employee(); $subordinates = $subordinate->Find("supervisor = ?", array($employee->id)); $subordinatesIds = $employee->id; foreach ($subordinates as $sub) { if ($subordinatesIds != "") { $subordinatesIds .= ","; } $subordinatesIds .= $sub->id; } $employeeLeave = new EmployeeLeave(); $startDate = date("Y-m-d H:i:s", $req->start); $endDate = date("Y-m-d H:i:s", $req->end); $list = $employeeLeave->Find("employee in (" . $subordinatesIds . ") and status in ('Approved','Pending') and ((date_start >= ? and date_start <= ? ) or (date_end >= ? and date_end <= ?))", array($startDate, $endDate, $startDate, $endDate)); } else { $employeeLeave = new EmployeeLeave(); $startDate = $req->start; $endDate = $req->end; $list = $employeeLeave->Find("status in ('Approved','Pending') and ((date_start >= ? and date_start <= ? ) or (date_end >= ? and date_end <= ?))", array($startDate, $endDate, $startDate, $endDate)); } if (!$list) { LogManager::getInstance()->info($employeeLeave->ErrorMsg()); } if (!empty($map)) { $list = $this->baseService->populateMapping($list, $map); } $leaveType = new LeaveType(); $leaveTypesTemp = $leaveType->Find("1=1"); $leaveTypes = array(); foreach ($leaveTypesTemp as $leaveType) { $leaveTypes[$leaveType->name] = $leaveType; } $data = array(); $mode = CalendarTools::getCalendarMode($req->start, $req->end); foreach ($list as $leave) { $tmpEvents = $this->leaveToEvents($leave, $leaveTypes); foreach ($tmpEvents as $event) { $data[] = $event; } } /* if($mode == CalendarTools::MODE_MONTH){ foreach($list as $leave){ $data[] = $this->leaveToEvent($leave, $leaveTypes); } }else{ foreach($list as $leave){ $tmpEvents = $this->leaveToEvents($leave, $leaveTypes); foreach($tmpEvents as $event){ $data[] = $event; } } } */ $holiday = new HoliDay(); $holidays = $holiday->Find("1=1", array()); foreach ($holidays as $holiday) { $data[] = $this->holidayToEvent($holiday); } echo json_encode($data); exit; }