Browse Source

More fixes in attendance lib improving UI for user attendance results

Julio Montoya 12 years ago
parent
commit
6f9605dc2d

+ 2 - 2
main/attendance/attendance_sheet.php

@@ -201,8 +201,8 @@ if (api_is_allowed_to_edit(null, true) || api_is_coach(api_get_session_id(), api
                         <td><span title="<?php echo $username ?>"><?php echo $data['lastname'] ?></span></td>
                         <td><?php echo $data['firstname'] ?></td>
                         <td>
-                            <div class="attendance-faults-bar" style="background-color:<?php echo (!empty($data['result_color_bar'])?$data['result_color_bar']:'none') ?>">
-                                <?php echo $data['attendance_result'] ?>
+                            <div class="attendance-faults-bar">                                
+                                <?php echo Display::label($data['attendance_result'], $data['result_color_bar']); ?>
                             </div>                        
                         </td>
                     </tr>

+ 29 - 23
main/inc/lib/attendance.lib.php

@@ -68,7 +68,8 @@ class Attendance
         $condition_session = api_get_session_condition($session_id);
 
 		// Get attendance data
-		$sql = "SELECT id, name, attendance_qualify_max FROM $tbl_attendance 
+		$sql = "SELECT id, name, attendance_qualify_max 
+                FROM $tbl_attendance 
 		        WHERE c_id = $course_id AND active = 1 $condition_session ";
 		$rs  = Database::query($sql);
 		if (Database::num_rows($rs) > 0) {
@@ -144,8 +145,11 @@ class Attendance
                 $session_star = api_get_session_image(api_get_session_id(), $user_info['status']);
             }
             
-            if ($attendance['locked'] == 1) {
+            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;
@@ -283,7 +287,7 @@ class Attendance
 		// add link to gradebook
 		if ($link_to_gradebook && !empty($this->category_id)) {
 			$description = '';
-			$link_info = is_resource_in_course_gradebook($course_code,7,$last_id,$session_id);
+			$link_info = is_resource_in_course_gradebook($course_code, 7, $last_id, $session_id);
             $link_id = $link_info['id'];
 			if (!$link_info) {
 				add_resource_to_course_gradebook($this->category_id, $course_code, 7, $last_id, $title_gradebook,$weight_calification,$value_calification,$description,1,$session_id);
@@ -443,10 +447,11 @@ class Attendance
         $current_session_id  = $this->get_session_id();
         
 		if (!empty($current_session_id)) {
-			$a_course_users = CourseManager :: get_user_list_from_course_code($current_course_id, $current_session_id,'','lastname');
+			$a_course_users = CourseManager :: get_user_list_from_course_code($current_course_id, $current_session_id,'', 'lastname');
 		} else {
 			$a_course_users = CourseManager :: get_user_list_from_course_code($current_course_id, 0, '','lastname');
 		}
+                
 		// get registered users inside current course
 		$a_users = array();
 		foreach ($a_course_users as $key =>$user_data) {
@@ -457,7 +462,7 @@ class Attendance
 			$user_status_in_session = null;
 			$user_status_in_course  = null;
 			
-			if (api_get_session_id()) {
+			if ($current_session_id) {
                 $user_status_in_session = SessionManager::get_user_status_in_course_session($uid, $current_course_id, $current_session_id);                
 			} else {
 			    $user_status_in_course = CourseManager::get_user_in_course_status($uid, $current_course_id);
@@ -496,13 +501,13 @@ class Attendance
 	}
 
 	/**
-	 * add attendaces sheet inside table
+	 * Add attendaces sheet inside table
 	 * @param 	int	   attendance calendar id
 	 * @param  	array  present users during current class (array with user_ids)
 	 * @param	int	   attendance id
 	 * @return 	int    affected rows
 	 */
-	public function attendance_sheet_add($calendar_id, $users_present, $attendance_id, $save_user_absents = true) {
+	public function attendance_sheet_add($calendar_id, $users_present, $attendance_id, $save_user_absents = true, $done_attendance = true) {
 		$tbl_attendance_sheet 	= Database::get_course_table(TABLE_ATTENDANCE_SHEET);
 		$tbl_attendance_calendar= Database::get_course_table(TABLE_ATTENDANCE_CALENDAR);
 		
@@ -568,12 +573,14 @@ class Attendance
                 }
             }
         }
+        
+        if ($done_attendance) {
+            // update done_attendance inside attendance calendar table
+            $sql = "UPDATE $tbl_attendance_calendar SET done_attendance = 1 WHERE c_id = $course_id AND id = '$calendar_id'";
+            Database::query($sql);
+        }
 
-		// update done_attendance inside attendance calendar table
-		$sql = "UPDATE $tbl_attendance_calendar SET done_attendance = 1 WHERE c_id = $course_id AND id = '$calendar_id'";
-		Database::query($sql);
-
-		// Save user's results
+		// Save user's results        
 		$this->update_users_results($user_ids, $attendance_id);
 
         if ($affected_rows) {
@@ -712,8 +719,7 @@ class Attendance
 		$user_id 		= intval($user_id);
 		$attendance_id 	= intval($attendance_id);
 		$results = array();
-		$attendance_data 	= $this->get_attendance_by_id($attendance_id);
-		
+		$attendance_data 	= $this->get_attendance_by_id($attendance_id);		
 		$calendar_count 	= $this->get_number_of_attendance_calendar($attendance_id);
 		
 		$total_done_attendance 	= $attendance_data['attendance_qualify_max'];
@@ -724,22 +730,22 @@ class Attendance
 		//$total_done_attendance = $calendar_count;
 
 		// calculate results
-		$faults = $total_done_attendance - $attendance_user_score;	
-		
+		$faults = $total_done_attendance - $attendance_user_score;		
 		$faults = $faults > 0 ? $faults:0;
 		$faults_porcent = $calendar_count > 0 ?round(($faults*100)/$calendar_count,0):0;
 		$results['faults'] 			= $faults;
 		$results['total']			= $calendar_count;
 		$results['faults_porcent'] 	= $faults_porcent;
-		$color_bar = '';
-
+        
+		$color_bar = 'success';
 		if ($faults_porcent > 25  ) {
-			$color_bar = '#F11';
-		} else if ($faults_porcent > 10) {
-			$color_bar = '#F90';
-		}
+			$color_bar = 'important';
+		} elseif ($faults_porcent > 10) {
+			$color_bar = 'warning';
+		} elseif ($faults_porcent > 1) {
+            $color_bar = 'info';
+        }
 		$results['color_bar'] = $color_bar;
-
 		return $results;
 	}
 

+ 1 - 2
main/inc/lib/gradebook.lib.php

@@ -54,8 +54,7 @@ class Gradebook extends Model {
         foreach($gradebooks as &$gradebook) {
             if (empty($gradebook['name'])) {
                 $gradebook['name'] = $gradebook['course_code'];
-            }
-            //$gradebook['name'] = $gradebook['course_code'] .' > '.$gradebook['name'];
+            }            
         }
         return $gradebooks;        
     }

+ 9 - 11
tests/migrate/migration.custom.class.php

@@ -363,7 +363,7 @@ class MigrationCustom {
     static function create_attendance($data) {        
         error_log('create_attendance');
         $session_id = $data['session_id'];
-        $user_id = $data['user_id'];
+        $user_id    = $data['user_id'];
         
         if (!empty($session_id) && !empty($user_id)) {
             $attendance = new Attendance();            
@@ -381,8 +381,7 @@ class MigrationCustom {
                     $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);                    
-                    
+                    $attendance_list = $attendance->get_attendances_list($course_info['real_id'], $session_id);                            
                     if (empty($attendance_list)) {
                         $attendance->set_name('Asistencia');
                         $attendance->set_description('');
@@ -397,23 +396,22 @@ class MigrationCustom {
                         $attendance_data = current($attendance_list);                        
                         $attendance_id = $attendance_data['id'];
                     }            
-                    
+               
                     if ($attendance_id) {
                         //Attendance date exists?
-                        $cal_info = $attendance->get_attendance_calendar_data_by_date($attendance_id, $data['fecha']);
-              
+                        $cal_info = $attendance->get_attendance_calendar_data_by_date($attendance_id, $data['fecha']);                             
                         if ($cal_info && isset($cal_info['id'])) {
                             $cal_id = $cal_info['id'];
                         } else {
                             //Creating the attendance date
                             $attendance->set_date_time($data['fecha']);
-                            $cal_id = $attendance->attendance_calendar_add($attendance_id, true);                     
-                        }                      
-                        
+                            $cal_id = $attendance->attendance_calendar_add($attendance_id, true);
+                            error_log("Creating attendance calendar $cal_id");
+                        }
                         //Adding presence for the user (by default everybody is present)
                         $users_present = array($user_id);
-                        $attendance->attendance_sheet_add($cal_id, $users_present, $attendance_id, false);
-                        exit;
+                        $attendance->attendance_sheet_add($cal_id, $users_present, $attendance_id, false, false);
+                        error_log("Adding calendar to user: $user_id to calendar: $cal_id");                        
                     } else {
                         error_log('No attendance_id created');
                     }