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;
 }