/** * Update attendee list status' on booking size change */ function facetoface_update_attendees($session) { global $USER, $DB; // Get facetoface $facetoface = $DB->get_record('facetoface', array('id' => $session->facetoface)); // Get course $course = $DB->get_record('course', array('id' => $facetoface->course)); // Update user status' $users = facetoface_get_attendees($session->id); if ($users) { // No/deleted session dates if (empty($session->datetimeknown)) { // Convert any bookings to waitlists foreach ($users as $user) { if ($user->statuscode == MDL_F2F_STATUS_BOOKED) { if (!facetoface_user_signup($session, $facetoface, $course, $user->discountcode, $user->notificationtype, MDL_F2F_STATUS_WAITLISTED, $user->id)) { // rollback_sql(); return false; } } } // Session dates exist } else { // Convert earliest signed up users to booked, and make the rest waitlisted $capacity = $session->capacity; // Count number of booked users $booked = 0; foreach ($users as $user) { if ($user->statuscode == MDL_F2F_STATUS_BOOKED) { $booked++; } } // If booked less than capacity, book some new users if ($booked < $capacity) { foreach ($users as $user) { if ($booked >= $capacity) { break; } if ($user->statuscode == MDL_F2F_STATUS_WAITLISTED) { if (!facetoface_user_signup($session, $facetoface, $course, $user->discountcode, $user->notificationtype, MDL_F2F_STATUS_BOOKED, $user->id)) { // rollback_sql(); return false; } $booked++; } } } } } return $session->id; }
break; case 'takeattendance': $rows = facetoface_get_attendees($session->id, array(MDL_F2F_STATUS_BOOKED, MDL_F2F_STATUS_NO_SHOW, MDL_F2F_STATUS_PARTIALLY_ATTENDED, MDL_F2F_STATUS_FULLY_ATTENDED)); break; case 'attendees': if ($attendees) { $rows = $attendees; } else { if ($session->datetimeknown) { $rows = facetoface_get_attendees($session->id, array(MDL_F2F_STATUS_BOOKED, MDL_F2F_STATUS_NO_SHOW, MDL_F2F_STATUS_PARTIALLY_ATTENDED, MDL_F2F_STATUS_FULLY_ATTENDED)); } else { $rows = facetoface_get_attendees($session->id, array(MDL_F2F_STATUS_WAITLISTED, MDL_F2F_STATUS_BOOKED, MDL_F2F_STATUS_NO_SHOW, MDL_F2F_STATUS_PARTIALLY_ATTENDED, MDL_F2F_STATUS_FULLY_ATTENDED)); } } break; } if (!$download) { //output any notifications if (isset($result_message)) { echo $result_message; } else { $numattendees = facetoface_get_num_attendees($session->id); $overbooked = ($numattendees > $session->capacity); if (($action == 'attendees') && $overbooked) { $overbookedmessage = get_string('capacityoverbookedlong', 'facetoface', array('current' => $numattendees, 'maximum' => $session->capacity)); echo $OUTPUT->notification($overbookedmessage, 'notifynotice');
// Face-to-face activity to return to. // Load data. if (!($session = facetoface_get_session($s))) { print_error('error:incorrectcoursemodulesession', 'facetoface'); } if (!($facetoface = $DB->get_record('facetoface', array('id' => $session->facetoface)))) { print_error('error:incorrectfacetofaceid', 'facetoface'); } if (!($course = $DB->get_record('course', array('id' => $facetoface->course)))) { print_error('error:coursemisconfigured', 'facetoface'); } if (!($cm = get_coursemodule_from_instance('facetoface', $facetoface->id, $course->id))) { print_error('error:incorrectcoursemodule', 'facetoface'); } // Load attendees. $attendees = facetoface_get_attendees($session->id); // list of requests $requests = facetoface_get_requests($session->id); // Load cancellations. $cancellations = facetoface_get_cancellations($session->id); $context = context_course::instance($course->id); $contextmodule = context_module::instance($cm->id); $PAGE->set_context($context); /* * Handle submitted data */ if ($form = data_submitted()) { if (!confirm_sesskey()) { print_error('confirmsesskeybad', 'error'); } $return = "{$CFG->wwwroot}/mod/facetoface/approve.php?s={$s}&backtoallsessions={$backtoallsessions}";
public function attendence_consolidate($id){ global $DB; $session_single=$DB->get_field('facetoface_sessions','id',array('facetoface'=>$id)); $user_rows = facetoface_get_attendees($session_single, array(MDL_F2F_STATUS_BOOKED, MDL_F2F_STATUS_NO_SHOW, MDL_F2F_STATUS_PARTIALLY_ATTENDED, MDL_F2F_STATUS_FULLY_ATTENDED)); $data_user=array(); echo "<div class='attandance_fullwidth' style='width:100%;float:left'>"; foreach($user_rows as $user_row){ $list=array(); $list[]=$user_row->firstname; $data_user[]=$list; } // table code $table = new html_table(); $table->head = array('Employee'); $table->data=$data_user; echo '<div class="attendee_name" style="float:left;width:10%">'; echo html_writer::table($table); echo '</div>'; //print_object($rows); //$session_details_news=$DB->get_records_sql("SELECT * FROM {facetoface_sessions} WHERE facetoface=$id"); $location=''; $sessions = facetoface_get_sessions($id, $location); //$session_details=$DB->get_records('facetoface_sessions',array('facetoface'=>$id)); $session_count=1; foreach($sessions as $session_details_new){ $has_attendees = facetoface_get_num_attendees($session_details_new->id); if ($has_attendees && $session_details_new->datetimeknown && facetoface_has_session_started($session_details_new, time())) { $rows = facetoface_get_attendees($session_details_new->id, array(MDL_F2F_STATUS_BOOKED, MDL_F2F_STATUS_NO_SHOW, MDL_F2F_STATUS_PARTIALLY_ATTENDED, MDL_F2F_STATUS_FULLY_ATTENDED)); //print_object($rows); $data=array(); echo '<div class="indiv-attendance" style="float:left;width:10%">'; echo '<form method="post" action="attendence_consolidated.php" id="formattendence_'.$session_details_new->id.'">'; foreach($rows as $row){ $list=array(); if($row->statuscode==80){ $status='<input type="hidden" value="'.$row->submissionid.'" name="submmisionid[]"><input type="checkbox" name="status_['.$row->submissionid.']" checked="checked">'; } else if($row->statuscode==100){ $status='<input type="hidden" value="'.$row->submissionid.'" name="submmisionid[]"><input type="checkbox" name="status_['.$row->submissionid.']" >'; } else{ $status='<input type="hidden" value="'.$row->submissionid.'" name="submmisionid[]"><input type="checkbox" name="status_['.$row->submissionid.']" >'; } $list[]=$status; //$radio='<input type="text" value="'.$row->submissionid.'" name="submmisionid[]"><input type="radio" name="status[]" >'; $data[]=$list; } // table code $unixtime_to_date = date('d-m-Y', $session_details_new->sessiondates[0]->timestart); $unixtime_to_time = date('h:i:s a', $session_details_new->sessiondates[0]->timestart); /*added by hameed on 22 dec for attandance completed marking*/ $attendance_status = $DB->get_field('facetoface_sessions', 'attendence_status', array('id'=>$session_details_new->id)); if($attendance_status == 1){ $class = 'green'; }else{ $class = 'black'; } $session_name='<span class='.$class.'>Session'.$session_count.'<br>'.$unixtime_to_date.'<br>'.$unixtime_to_time.'</span>'; $table = new html_table(); $table->head = array($session_name); $table->data=$data; echo html_writer::table($table); echo '<input type="hidden" value="'.$session_details_new->id.'" name="session_details">'; echo '<input type="submit" value="Absent">'; echo '</form>'; echo '</div>'; $session_count++; echo html_writer::script(" $('.attendence_button').click(function(){ var data = $('#formattendence_$session_details_new->id').serialize(); //alert(data); $.ajax({ url: 'attendence_submit.php', type: 'POST', data: data, beforeSend: function(){ //alert(data); $('#result').html('Sending....'); }, success: function(data){ alert('Attendence Submitted'); //window.location.reload(); } }); }); "); //print_object($session_details_new->id); } } echo "</div>"; }
function test_facetoface_get_attendees() { // Test variables. $sessionid1 = 1; $sessionid2 = 42; // Test - for valid sessionid. $this->assertTrue((bool)count(facetoface_get_attendees($sessionid1))); // Test - for invalid sessionid. $this->assertEquals(facetoface_get_attendees($sessionid2), array()); $this->resetAfterTest(true); }