static function transaction_36($original_data, $web_service_details) { global $data_list; $data = Migration::soap_call($web_service_details, 'asistenciaDetalles', array('uididpersona' => $original_data['item_id'], 'uididprograma' => $original_data['orig_id'], 'uididfecha' => $original_data['info'], 'intIdSede' => $original_data['branch_id'])); if ($data['error'] == false) { $uidIdPrograma = $original_data['orig_id']; $uidIdPersona = $original_data['item_id']; $attendance_date = $data['date_assist']; $attendance_user_status = $data['status']; // modified in the asistenciaDetalles function $session_id = self::get_session_id_by_programa_id($uidIdPrograma, $data_list); $user_id = self::get_user_id_by_persona_id($uidIdPersona, $data_list); if (empty($user_id)) { return array('message' => "User does not exists in DB: {$uidIdPersona}", 'status_id' => self::TRANSACTION_STATUS_FAILED); } if (empty($session_id)) { return array('message' => "Session does not exists {$uidIdPrograma}", 'status_id' => self::TRANSACTION_STATUS_FAILED); } $course_list = SessionManager::get_course_list_by_session_id($session_id); if (!empty($course_list)) { $course_data = current($course_list); if (isset($course_data['code'])) { //Check if user exist in the session $status = SessionManager::get_user_status_in_course_session($user_id, $course_data['id'], $session_id); if ($status === false) { return array('message' => "User #{$user_id} is not registered in course code: {$course_data['code']} - session_id: {$session_id}", 'status_id' => self::TRANSACTION_STATUS_FAILED); } $time = self::get_horario_value($session_id); $attendance_date .= " {$time}:00"; $attendance = new Attendance(); $course_info = api_get_course_info($course_data['code']); $attendance->set_course_id($course_info['code']); $attendance->set_course_int_id($course_info['real_id']); $attendance->set_session_id($session_id); $attendance_list = $attendance->get_attendances_list($course_info['real_id'], $session_id); if (empty($attendance_list)) { return array('message' => "Attendance not found for course code: {$course_info['code']} - session_id: {$session_id}", 'status_id' => self::TRANSACTION_STATUS_FAILED); //only 1 course per session } else { $attendance_data = current($attendance_list); $attendance_id = $attendance_data['id']; error_log("Attendance found in attendance_id = {$attendance_id} - course code: {$course_info['code']} - session_id: {$session_id} - {$attendance_date}"); } $cal_info = $attendance->get_attendance_calendar_data_by_date($attendance_id, $attendance_date); if ($cal_info && isset($cal_info['id'])) { $cal_id = $cal_info['id']; } else { //Creating the attendance date $attendance->set_date_time($attendance_date); $cal_id = $attendance->attendance_calendar_add($attendance_id, true); error_log("Creating a new calendar item {$cal_id}"); /* return array( 'message' => "Attendance calendar does not exist for date: $attendance_date in attendance_id = $attendance_id - course code: {$course_info['code']} - session_id: $session_id", 'status_id' => self::TRANSACTION_STATUS_FAILED );*/ } $users_present = array($user_id => $attendance_user_status); $attendance_sheet_before = $attendance->attendance_sheet_get_info($cal_id, $user_id); $result = $attendance->attendance_sheet_add($cal_id, $users_present, $attendance_id, false, true); $attendance_sheet_after = $attendance->attendance_sheet_get_info($cal_id, $user_id); if ($result) { return array('entity' => 'attendance_sheet', 'before' => $attendance_sheet_before, 'after' => $attendance_sheet_after, 'message' => "Attendance sheet edited with", 'status_id' => self::TRANSACTION_STATUS_SUCCESSFUL); } else { return array('message' => "Attendance sheet can't be edited attendance_id: {$attendance_id} - cal_id: {$cal_id} - user_id: {$user_id} - course: {$course_info['code']} - session_id: {$session_id} ", 'status_id' => self::TRANSACTION_STATUS_FAILED); } } else { $message = "Course is not set"; } } else { $message = "NO course found for session id: {$session_id}"; } return array('message' => $message, 'status_id' => self::TRANSACTION_STATUS_FAILED); } else { return $data; } }
/** * Get the attendaces to display on the current page (fill the sortable-table) * @param int offset of first user to recover * @param int Number of users to get * @param int Column to sort on * @param string Order (ASC,DESC) * @see SortableTable#get_table_data($from) */ static function get_attendance_data($from = 0, $number_of_items = 20, $column = 1, $direction = 'desc') { $tbl_attendance = Database::get_course_table(TABLE_ATTENDANCE); $course_id = api_get_course_int_id(); $session_id = api_get_session_id(); $condition_session = api_get_session_condition($session_id); $column = intval($column); $from = intval($from); $number_of_items = intval($number_of_items); if (!in_array($direction, array('ASC', 'DESC'))) { $direction = 'ASC'; } $att = new Attendance(); $att->set_session_id($session_id); $att->set_course_int_id($course_id); $active_plus = 'att.active = 1'; if (api_is_platform_admin()) { $active_plus = ' 1 = 1 '; } $sql = "SELECT\n att.id,\n att.name,\n att.description,\n att.attendance_qualify_max,\n att.locked,\n att.active,\n att.session_id\n\t\t\t\tFROM {$tbl_attendance} att\n\t\t\t\tWHERE c_id = {$course_id} AND {$active_plus} {$condition_session}\n\t\t\t\tORDER BY {$column} {$direction}\n LIMIT {$from}, {$number_of_items} "; $res = Database::query($sql); $attendances = array(); $param_gradebook = ''; if (isset($_SESSION['gradebook'])) { $param_gradebook = '&gradebook=' . $_SESSION['gradebook']; } $user_info = api_get_user_info(); while ($attendance = Database::fetch_array($res, 'ASSOC')) { $id = $attendance['id']; $student_param = ''; if (api_is_drh() && $_GET['student_id']) { $student_param = '&student_id=' . Security::remove_XSS($_GET['student_id']); } $session_star = ''; if (api_get_session_id() == $attendance['session_id']) { $session_star = api_get_session_image(api_get_session_id(), $user_info['status']); } if ($attendance['active'] == 0) { $attendance['name'] = "<del>" . $attendance['name'] . "</del>"; } if ($attendance['locked'] == 1) { if (api_is_allowed_to_edit(null, true)) { //Link to edit $attendance['name'] = '<a href="index.php?' . api_get_cidreq() . '&action=attendance_sheet_list&attendance_id=' . $id . $param_gradebook . $student_param . '">' . $attendance['name'] . '</a>' . $session_star; } else { //Link to view $attendance['name'] = '<a href="index.php?' . api_get_cidreq() . '&action=attendance_sheet_list_no_edit&attendance_id=' . $id . $param_gradebook . $student_param . '">' . $attendance['name'] . '</a>' . $session_star; } } else { $attendance['name'] = '<a href="index.php?' . api_get_cidreq() . '&action=attendance_sheet_list&attendance_id=' . $id . $param_gradebook . $student_param . '">' . $attendance['name'] . '</a>' . $session_star; } //description $attendance['description'] = '<center>' . $attendance['description'] . '</center>'; if (api_is_allowed_to_edit(null, true)) { $actions = ''; $actions .= '<center>'; if (api_is_platform_admin()) { $actions .= '<a href="index.php?' . api_get_cidreq() . '&action=attendance_edit&attendance_id=' . $id . $param_gradebook . '">' . Display::return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL) . '</a> '; if ($attendance['locked'] == 0) { // $actions .= '<a onclick="javascript:if(!confirm(\''.get_lang('AreYouSureToDelete').'\')) return false;" href="index.php?'.api_get_cidreq().'&action=attendance_delete&attendance_id='.$id.$param_gradebook.'">'.Display::return_icon('delete.png',get_lang('Delete'), array(), ICON_SIZE_SMALL).'</a>'; } if ($attendance['active'] == 1) { $actions .= '<a onclick="javascript:if(!confirm(\'' . get_lang('AreYouSureToDelete') . '\')) return false;" href="index.php?' . api_get_cidreq() . '&action=attendance_delete&attendance_id=' . $id . $param_gradebook . '">' . Display::return_icon('delete.png', get_lang('Delete'), array(), ICON_SIZE_SMALL) . '</a>'; } else { $actions .= '<a onclick="javascript:if(!confirm(\'' . get_lang('AreYouSureToRestore') . '\')) return false;" href="index.php?' . api_get_cidreq() . '&action=attendance_restore&attendance_id=' . $id . $param_gradebook . '">' . Display::return_icon('invisible.png', get_lang('Restore'), array(), ICON_SIZE_SMALL) . '</a>'; } } else { $is_locked_attendance = self::is_locked_attendance($attendance['id']); if ($is_locked_attendance) { $actions .= Display::return_icon('edit_na.png', get_lang('Edit')) . ' '; $actions .= Display::return_icon('delete_na.png', get_lang('Delete')); } else { $actions .= '<a href="index.php?' . api_get_cidreq() . '&action=attendance_edit&attendance_id=' . $id . $param_gradebook . '">' . Display::return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL) . '</a> '; $actions .= '<a onclick="javascript:if(!confirm(\'' . get_lang('AreYouSureToDelete') . '\')) return false;" href="index.php?' . api_get_cidreq() . '&action=attendance_delete&attendance_id=' . $id . $param_gradebook . '">' . Display::return_icon('delete.png', get_lang('Delete'), array(), ICON_SIZE_SMALL) . '</a>'; } } // display lock/unlock icon $is_done_all_calendar = $att->is_all_attendance_calendar_done($id); if ($is_done_all_calendar) { $locked = $attendance['attendance_qualify_max']; if ($locked == 0) { if (api_is_platform_admin()) { $message_alert = get_lang('AreYouSureToLockTheAttendance'); } else { $message_alert = get_lang('UnlockMessageInformation'); } $actions .= ' <a onclick="javascript:if(!confirm(\'' . $message_alert . '\')) return false;" href="index.php?' . api_get_cidreq() . '&action=lock_attendance&attendance_id=' . $id . $param_gradebook . '">' . Display::return_icon('unlock.png', get_lang('LockAttendance')) . '</a>'; } else { if (api_is_platform_admin()) { $actions .= ' <a onclick="javascript:if(!confirm(\'' . get_lang('AreYouSureToUnlockTheAttendance') . '\')) return false;" href="index.php?' . api_get_cidreq() . '&action=unlock_attendance&attendance_id=' . $id . $param_gradebook . '">' . Display::return_icon('lock.png', get_lang('UnlockAttendance')) . '</a>'; } else { $actions .= ' ' . Display::return_icon('locked_na.png', get_lang('LockedAttendance')); } } } $actions .= '</center>'; $attendance['actions'] = $actions; $attendances[] = $attendance; } else { $attendances[] = $attendance; } } return $attendances; }
// foreach ($courses as $course) { // $course_id = $course['id']; // break; // } if (!empty($course_id)) { $out2 = "-- Course " . $course_id . "\n"; // Get attendances sheets from course (only one in each course) $att = $a->get_attendances_list($course_id, $session_id); if (count($att) > 0) { foreach ($att as $at) { $at_id = $at['id']; break; //get out after first result } $out3 = "---- Attendance " . $at_id . "\n"; $a->set_course_int_id($course_id); $cal_list = $a->get_attendance_calendar($at_id); $cal_count = count($cal_list); foreach ($cal_list as $cal) { $cal_id = $cal['id']; $sql = "SELECT * FROM c_attendance_sheet WHERE c_id = {$course_id} AND attendance_calendar_id = {$cal_id}"; $res_att = Database::query($sql); $att_count = Database::num_rows($res_att); if ($att_count < count($u)) { $out4 = "------ Found {$att_count} when should have found " . count($u) . " attendances for " . $cal['date_time'] . "\n"; echo $out1 . $out2 . $out3 . $out4; while ($row_att = Database::fetch_assoc($res_att)) { $atts[] = $row_att['user_id']; } $missing = array_diff($u, $atts); foreach ($missing as $u1) {