Browse Source

Add students filters for student boss - refs BT#9442

Angel Fernando Quiroz Campos 10 years ago
parent
commit
622137fcf2

+ 92 - 11
main/gradebook/certificate_report.php

@@ -24,10 +24,11 @@ $selectedSession = isset($_POST['session']) && !empty($_POST['session']) ? intva
 $selectedCourse = isset($_POST['course']) && !empty($_POST['course']) ? intval($_POST['course']) : 0;
 $selectedMonth = isset($_POST['month']) && !empty($_POST['month']) ? intval($_POST['month']) : 0;
 $selectedYear = isset($_POST['year']) && !empty($_POST['year']) ? trim($_POST['year']) : null;
+$selectedStudent = isset($_POST['student']) && !empty($_POST['student']) ? intval($_POST['student']) : 0;
 
 $userId = api_get_user_id();
 
-$sessions = $courses = $months = [0 => get_lang('Select')];
+$sessions = $courses = $months = $students = [0 => get_lang('Select')];
 
 if (api_is_student_boss()) {
     $userList = GroupPortalManager::getGroupUsersByUser($userId);
@@ -88,6 +89,7 @@ $certificateStudents = array();
 
 $searchSessionAndCourse = $selectedSession > 0 && $selectedCourse > 0;
 $searchCourseOnly = $selectedSession <= 0 && $selectedCourse > 0;
+$searchStudentOnly = $selectedStudent > 0;
 
 if ($searchSessionAndCourse || $searchCourseOnly) {
     $selectedCourseInfo = api_get_course_info_by_id($selectedCourse);
@@ -172,6 +174,62 @@ if ($searchSessionAndCourse || $searchCourseOnly) {
                     );
                 }
 
+                if (count($certificateStudent['certificates']) > 0) {
+                    $certificateStudents[] = $certificateStudent;
+                }
+            }
+        }
+    }
+} elseif ($searchStudentOnly) {
+    $selectedStudentInfo = api_get_user_info($selectedStudent);
+
+    if (empty($selectedStudentInfo)) {
+        Session::write('reportErrorMessage', get_lang('NoUser'));
+
+        Header::location($selfUrl);
+    }
+
+    $sessionList = SessionManager::getSessionsFollowedByUser($selectedStudent);
+
+    foreach ($sessionList as $session) {
+        $sessionCourseList = SessionManager::get_course_list_by_session_id($session['id']);
+
+        foreach ($sessionCourseList as $sessionCourse) {
+            $gradebookCategories = Category::load(null, null, $sessionCourse['code'], null, false, $session['id']);
+
+            $gradebook = null;
+
+            if (!empty($gradebookCategories)) {
+                $gradebook = current($gradebookCategories);
+            }
+
+            if (!is_null($gradebook)) {
+                $sessionName = $session['name'];
+                $courseName = $sessionCourse['title'];
+
+                $certificateStudent = [
+                    'fullName' => $selectedStudentInfo['complete_name'],
+                    'sessionName' => $sessionName,
+                    'courseName' => $courseName,
+                    'certificates' => []
+                ];
+
+                $studentCertificates = GradebookUtils::get_list_gradebook_certificates_by_user_id(
+                    $selectedStudent,
+                    $gradebook->get_id()
+                );
+
+                if (!is_array($studentCertificates) || empty($studentCertificates)) {
+                    continue;
+                }
+
+                foreach ($studentCertificates as $certificate) {
+                    $certificateStudent['certificates'][] = array(
+                        'createdAt' => api_convert_and_format_date($certificate['created_at']),
+                        'id' => $certificate['id']
+                    );
+                }
+
                 if (count($certificateStudent['certificates']) > 0) {
                     $certificateStudents[] = $certificateStudent;
                 }
@@ -187,31 +245,54 @@ if (Session::has('reportErrorMessage')) {
     $template->assign('errorMessage', Session::read('reportErrorMessage'));
 }
 
-$form = new FormValidator(
+$searchBySessionCourseDateForm = new FormValidator(
     'certificate_report_form',
     'post',
     api_get_path(WEB_CODE_PATH) . 'gradebook/certificate_report.php'
 );
-$form->addHeader(get_lang('GradebookListOfStudentsCertificates'));
-$form->addSelect('session', get_lang('Sessions'), $sessions, ['id' => 'session']);
-$form->addSelect('course', get_lang('Courses'), $courses, ['id' => 'course']);
-$form->addGroup(
+$searchBySessionCourseDateForm->addSelect('session', get_lang('Sessions'), $sessions, ['id' => 'session']);
+$searchBySessionCourseDateForm->addSelect('course', get_lang('Courses'), $courses, ['id' => 'course']);
+$searchBySessionCourseDateForm->addGroup(
     [
-        $form->createElement('select', 'month', null, $months, ['id' => 'month']),
-        $form->createElement('text', 'year', null, ['id' => 'year'])
+        $searchBySessionCourseDateForm->createElement('select', 'month', null, $months, ['id' => 'month']),
+        $searchBySessionCourseDateForm->createElement(
+            'text',
+            'year',
+            null,
+            ['id' => 'year', 'placeholder' => get_lang('Year')]
+        )
     ],
     null,
     get_lang('Date')
 );
-$form->addButtonSearch();
-$form->setDefaults([
+$searchBySessionCourseDateForm->addButtonSearch();
+$searchBySessionCourseDateForm->setDefaults([
     'session' => $selectedSession,
     'course' => $selectedCourse,
     'month' => $selectedMonth,
     'year' => $selectedYear
 ]);
 
-$template->assign('form', $form->returnForm());
+if (api_is_student_boss()) {
+    foreach ($userList as $studentId) {
+        $students[$studentId] = api_get_user_info($studentId)['complete_name_with_username'];
+    }
+
+    $searchByStudentForm = new FormValidator(
+        'certificate_report_form',
+        'post',
+        api_get_path(WEB_CODE_PATH) . 'gradebook/certificate_report.php'
+    );
+    $searchByStudentForm->addSelect('student', get_lang('Students'), $students, ['id' => 'student']);
+    $searchByStudentForm->addButtonSearch();
+    $searchByStudentForm->setDefaults([
+        'student' => $selectedStudent
+    ]);
+
+    $template->assign('searchByStudentForm', $searchByStudentForm->returnForm());
+}
+
+$template->assign('searchBySessionCourseDateForm', $searchBySessionCourseDateForm->returnForm());
 $template->assign('sessions', $sessions);
 $template->assign('courses', $courses);
 $template->assign('months', $months);

+ 8 - 3
main/template/default/gradebook/certificate_report.tpl

@@ -10,8 +10,6 @@
                 a: 'display_sessions_courses',
                 session: sessionId
             }, function (courseList) {
-                var $option = null;
-
                 $('<option>', {
                     value: 0,
                     text: "{{ 'Select' | get_lang }}"
@@ -30,18 +28,25 @@
     });
 </script>
 
-{{ form }}
+{{ searchBySessionCourseDateForm }}
+
+<hr>
+
+{{ searchByStudentForm }}
 
 {% if errorMessage is defined %}
     <div class="alert alert-error">{{ errorMessage }}</div>
 {% endif %}
 
 {% if not certificateStudents is empty %}
+    <h2 class="page-header">{{ "GradebookListOfStudentsCertificates" | get_lang }}</h2>
+    {% if not exportAllLink is null %}
     <div class="actions">
         <a href="{{ exportAllLink }}" class="btn btn-info">
             <i class="fa fa-check"></i> {{ 'ExportAllCertificatesToPDF' | get_lang }}
         </a>
     </div>
+    {% endif %}
 
     <table class="table table-striped">
         <thead>