/**
  * It's used for controlling attendace calendar (list, add, edit, delete),
  * render to attendance_calendar view
  * @param string action (optional, by default 'calendar_list')
  * @param int	 attendance id (optional)
  * @param int	 calendar id (optional)
  */
 public function attendance_calendar($action = 'calendar_list', $attendance_id = 0, $calendar_id = 0)
 {
     $attendance = new Attendance();
     $calendar_id = intval($calendar_id);
     $data = array();
     $data['attendance_id'] = $attendance_id;
     $attendance_id = intval($attendance_id);
     if ($action == 'calendar_add') {
         if (strtoupper($_SERVER['REQUEST_METHOD']) == "POST") {
             if (!isset($_POST['cancel'])) {
                 if (isset($_POST['repeat'])) {
                     //@todo  check this error_logs
                     $start_datetime = api_strtotime(api_get_utc_datetime($attendance->build_datetime_from_array($_POST['date_time'])), 'UTC');
                     //error_log('$start_datetime '.$start_datetime);
                     $_POST['end_date_time']['H'] = $_POST['date_time']['H'];
                     $_POST['end_date_time']['i'] = $_POST['date_time']['i'];
                     //error_log($attendance->build_datetime_from_array($_POST['end_date_time']));
                     $end_datetime = api_strtotime(api_get_utc_datetime($attendance->build_datetime_from_array($_POST['end_date_time'])), 'UTC');
                     //error_log('$end_datetime '.$end_datetime);
                     $checkdate = checkdate($_POST['end_date_time']['F'], $_POST['end_date_time']['d'], $_POST['end_date_time']['Y']);
                     $repeat_type = $_POST['repeat_type'];
                     if ($end_datetime > $start_datetime && $checkdate) {
                         $affected_rows = $attendance->attendance_repeat_calendar_add($attendance_id, $start_datetime, $end_datetime, $repeat_type);
                         $action = 'calendar_list';
                     } else {
                         if (!$checkdate) {
                             $data['error_checkdate'] = true;
                         } else {
                             $data['error_repeat_date'] = true;
                         }
                         $data['repeat'] = true;
                         $action = 'calendar_add';
                     }
                 } else {
                     $datetime = $attendance->build_datetime_from_array($_POST['date_time']);
                     $datetimezone = api_get_utc_datetime($datetime);
                     if (!empty($datetime)) {
                         $attendance->set_date_time($datetimezone);
                         $affected_rows = $attendance->attendance_calendar_add($attendance_id);
                         $action = 'calendar_list';
                     } else {
                         $data['error_date'] = true;
                         $action = 'calendar_add';
                     }
                 }
             } else {
                 $action = 'calendar_list';
             }
         }
     } else {
         if ($action == 'calendar_edit') {
             $data['calendar_id'] = $calendar_id;
             if (strtoupper($_SERVER['REQUEST_METHOD']) == "POST") {
                 if (!isset($_POST['cancel'])) {
                     $datetime = $attendance->build_datetime_from_array($_POST['date_time']);
                     $datetimezone = api_get_utc_datetime($datetime);
                     $attendance->set_date_time($datetimezone);
                     $affected_rows = $attendance->attendance_calendar_edit($calendar_id, $attendance_id);
                     $data['calendar_id'] = 0;
                     $action = 'calendar_list';
                 } else {
                     $action = 'calendar_list';
                 }
             }
         } else {
             if ($action == 'calendar_delete') {
                 $affected_rows = $attendance->attendance_calendar_delete($calendar_id, $attendance_id);
                 $action = 'calendar_list';
             } else {
                 if ($action == 'calendar_all_delete') {
                     $affected_rows = $attendance->attendance_calendar_delete(0, $attendance_id, true);
                     $action = 'calendar_list';
                 }
             }
         }
     }
     $data['action'] = $action;
     $data['attendance_calendar'] = $attendance->get_attendance_calendar($attendance_id);
     $data['is_locked_attendance'] = $attendance->is_locked_attendance($attendance_id);
     // render to the view
     $this->view->set_data($data);
     $this->view->set_layout('layout');
     $this->view->set_template('attendance_calendar');
     $this->view->render();
 }
 /**
  * It's used for controlling attendance calendar (list, add, edit, delete),
  * render to attendance_calendar view
  * @param string $action (optional, by default 'calendar_list')
  * @param int	 $attendance_id (optional)
  * @param int	 $calendar_id (optional)
  */
 public function attendance_calendar($action = 'calendar_list', $attendance_id = 0, $calendar_id = 0)
 {
     $attendance = new Attendance();
     $calendar_id = intval($calendar_id);
     $data = array();
     $data['attendance_id'] = $attendance_id;
     $attendance_id = intval($attendance_id);
     $groupList = isset($_POST['groups']) ? array($_POST['groups']) : array();
     if ($action == 'calendar_add') {
         if (strtoupper($_SERVER['REQUEST_METHOD']) == "POST") {
             if (!isset($_POST['cancel'])) {
                 if (isset($_POST['repeat'])) {
                     //@todo  check this error_logs
                     $start_datetime = api_strtotime(api_get_utc_datetime($_POST['date_time']), 'UTC');
                     $end_datetime = api_strtotime(api_get_utc_datetime($_POST['end_date_time'] . ' 23:59:59'), 'UTC');
                     $checkdate = api_is_valid_date(api_get_utc_datetime($_POST['end_date_time'] . ' 23:59:59'));
                     $repeat_type = $_POST['repeat_type'];
                     if ($end_datetime > $start_datetime && $checkdate) {
                         $attendance->attendance_repeat_calendar_add($attendance_id, $start_datetime, $end_datetime, $repeat_type, $groupList);
                         $action = 'calendar_list';
                     } else {
                         if (!$checkdate) {
                             $data['error_checkdate'] = true;
                         } else {
                             $data['error_repeat_date'] = true;
                         }
                         $data['repeat'] = true;
                         $action = 'calendar_add';
                     }
                 } else {
                     $datetime = $_POST['date_time'];
                     $datetimezone = api_get_utc_datetime($datetime);
                     if (!empty($datetime)) {
                         $attendance->set_date_time($datetimezone);
                         $attendance->attendance_calendar_add($attendance_id, $groupList);
                         $action = 'calendar_list';
                     } else {
                         $data['error_date'] = true;
                         $action = 'calendar_add';
                     }
                 }
             } else {
                 $action = 'calendar_list';
             }
         }
     } else {
         if ($action == 'calendar_edit') {
             $data['calendar_id'] = $calendar_id;
             if (strtoupper($_SERVER['REQUEST_METHOD']) == "POST") {
                 if (!isset($_POST['cancel'])) {
                     $datetime = $_POST['date_time'];
                     $datetimezone = api_get_utc_datetime($datetime);
                     $attendance->set_date_time($datetimezone);
                     $attendance->attendance_calendar_edit($calendar_id, $attendance_id);
                     $data['calendar_id'] = 0;
                     $action = 'calendar_list';
                 } else {
                     $action = 'calendar_list';
                 }
             }
         } else {
             if ($action == 'calendar_delete') {
                 $attendance->attendance_calendar_delete($calendar_id, $attendance_id);
                 $action = 'calendar_list';
             } else {
                 if ($action == 'calendar_all_delete') {
                     $attendance->attendance_calendar_delete(0, $attendance_id, true);
                     $action = 'calendar_list';
                 }
             }
         }
     }
     $data['action'] = $action;
     $data['attendance_calendar'] = $attendance->get_attendance_calendar($attendance_id, 'all', null, null, true);
     $data['is_locked_attendance'] = $attendance->is_locked_attendance($attendance_id);
     // render to the view
     $this->view->set_data($data);
     $this->view->set_layout('layout');
     $this->view->set_template('attendance_calendar');
     $this->view->render();
 }