fix below 60 pages

This commit is contained in:
root
2026-05-30 02:17:47 -04:00
parent 39ab0d113e
commit fcfa56b3f5
2 changed files with 319 additions and 66 deletions
+109 -22
View File
@@ -1070,14 +1070,15 @@ class GradingController extends Controller
public function belowSixty()
{
$configuredSemester = (string) $this->semester;
$configuredYear = (string) $this->schoolYear;
$requestedSemester = trim((string)($this->request->getGet('semester') ?? ''));
$requestedSemester = strtolower(trim((string)($this->request->getGet('semester') ?? '')));
$requestedYear = trim((string)($this->request->getGet('school_year') ?? ''));
$isYearMode = (strtolower($requestedSemester) === 'year');
$semester = $isYearMode ? 'year' : ($requestedSemester !== '' ? $requestedSemester : ($configuredSemester !== '' ? $configuredSemester : 'Fall'));
// This page intentionally supports only Fall and Whole Year.
// Spring is still used internally for the Whole Year calculation, but it is not selectable here.
$isYearMode = ($requestedSemester === 'year');
$semester = $isYearMode ? 'year' : 'Fall';
$schoolYear = $requestedYear !== '' ? $requestedYear : $configuredYear;
$schoolYears = $this->getSchoolYearsForScores($schoolYear);
@@ -1092,10 +1093,12 @@ class GradingController extends Controller
'schoolYears' => $schoolYears,
'canViewGrading' => $canViewGrading,
'isYearMode' => $isYearMode,
'semesterOptions' => ['Fall'],
'showAllSemesterOption' => true,
]);
}
public function editBelowSixtyEmail()
{
$studentId = (int)$this->request->getGet('student_id');
@@ -1766,7 +1769,95 @@ class GradingController extends Controller
private function fetchBelowSixtyRows(string $schoolYear, string $semester): array
{
$isYearMode = strtolower(trim($semester)) === 'year';
$semesterKey = $isYearMode ? '' : strtolower(trim($semester));
if ($isYearMode) {
$rows = $this->db->table('semester_scores ss')
->select('s.id AS student_id')
->select('s.school_id')
->select('s.firstname')
->select('s.lastname')
->select('cs.class_section_name')
->select("'year' AS semester", false)
->select("MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'fall' THEN ss.homework_avg END) AS fall_homework_avg", false)
->select("MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'spring' THEN ss.homework_avg END) AS spring_homework_avg", false)
->select("MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'fall' THEN ss.project_avg END) AS fall_project_avg", false)
->select("MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'spring' THEN ss.project_avg END) AS spring_project_avg", false)
->select("MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'fall' THEN ss.participation_score END) AS fall_participation_score", false)
->select("MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'spring' THEN ss.participation_score END) AS spring_participation_score", false)
->select("MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'fall' THEN COALESCE(ss.test_avg, ss.quiz_avg) END) AS fall_test_avg", false)
->select("MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'spring' THEN COALESCE(ss.test_avg, ss.quiz_avg) END) AS spring_test_avg", false)
->select("MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'fall' THEN ss.ptap_score END) AS fall_ptap_score", false)
->select("MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'spring' THEN ss.ptap_score END) AS spring_ptap_score", false)
->select("MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'fall' THEN ss.attendance_score END) AS fall_attendance_score", false)
->select("MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'spring' THEN ss.attendance_score END) AS spring_attendance_score", false)
->select("MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'fall' THEN ss.midterm_exam_score END) AS fall_midterm_exam_score", false)
->select("MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'spring' THEN ss.midterm_exam_score END) AS spring_midterm_exam_score", false)
->select("MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'fall' THEN ss.final_exam_score END) AS fall_final_exam_score", false)
->select("MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'spring' THEN ss.final_exam_score END) AS spring_final_exam_score", false)
->select("MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'fall' THEN ss.semester_score END) AS fall_score", false)
->select("MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'spring' THEN ss.semester_score END) AS spring_score", false)
->select("(
MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'fall' THEN ss.semester_score END)
+ MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'spring' THEN ss.semester_score END)
) / 2 AS semester_score", false)
->select("(
MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'fall' THEN ss.homework_avg END)
+ MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'spring' THEN ss.homework_avg END)
) / 2 AS homework_avg", false)
->select("(
MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'fall' THEN ss.project_avg END)
+ MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'spring' THEN ss.project_avg END)
) / 2 AS project_avg", false)
->select("(
MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'fall' THEN ss.participation_score END)
+ MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'spring' THEN ss.participation_score END)
) / 2 AS participation_score", false)
->select("(
MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'fall' THEN COALESCE(ss.test_avg, ss.quiz_avg) END)
+ MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'spring' THEN COALESCE(ss.test_avg, ss.quiz_avg) END)
) / 2 AS test_avg", false)
->select("(
MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'fall' THEN ss.ptap_score END)
+ MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'spring' THEN ss.ptap_score END)
) / 2 AS ptap_score", false)
->select("(
MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'fall' THEN ss.attendance_score END)
+ MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'spring' THEN ss.attendance_score END)
) / 2 AS attendance_score", false)
->select("(
MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'fall' THEN ss.midterm_exam_score END)
+ MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'spring' THEN ss.midterm_exam_score END)
) / 2 AS midterm_exam_score", false)
->select("(
MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'fall' THEN ss.final_exam_score END)
+ MAX(CASE WHEN LOWER(TRIM(ss.semester)) = 'spring' THEN ss.final_exam_score END)
) / 2 AS final_exam_score", false)
->join('students s', 's.id = ss.student_id', 'inner')
->join('classSection cs', 'cs.class_section_id = ss.class_section_id', 'left')
->where('s.is_active', 1)
->where('ss.school_year', $schoolYear)
->where('ss.semester_score IS NOT NULL', null, false)
->where("LOWER(TRIM(ss.semester)) IN ('fall', 'spring')", null, false)
->groupBy('s.id, s.school_id, s.firstname, s.lastname, ss.class_section_id, cs.class_section_name')
->having('fall_score IS NOT NULL', null, false)
->having('spring_score IS NOT NULL', null, false)
->having('semester_score <', 60)
->orderBy('s.lastname', 'ASC')
->orderBy('s.firstname', 'ASC')
->get()
->getResultArray();
foreach ($rows as &$row) {
$row['comment'] = '';
$row['status'] = 'Open';
$row['note'] = '';
}
unset($row);
return $rows;
}
$semesterKey = 'fall';
$builder = $this->db->table('semester_scores ss')
->select([
's.id AS student_id',
@@ -1790,11 +1881,8 @@ class GradingController extends Controller
->where('s.is_active', 1)
->where('ss.school_year', $schoolYear)
->where('ss.semester_score IS NOT NULL', null, false)
->where('ss.semester_score <', 60);
if (!$isYearMode) {
$builder->where("LOWER(TRIM(ss.semester))", $semesterKey);
}
->where('ss.semester_score <', 60)
->where("LOWER(TRIM(ss.semester))", $semesterKey);
$rows = $builder
->orderBy('s.lastname', 'ASC')
@@ -1815,16 +1903,15 @@ class GradingController extends Controller
$commentMap = [];
if (!empty($studentIds)) {
$commentBuilder = $this->db->table('score_comments')
$commentRows = $this->db->table('score_comments')
->select('student_id, semester, comment, created_at')
->where('score_type', 'general')
->where('school_year', $schoolYear)
->whereIn('student_id', $studentIds)
->orderBy('created_at', 'DESC');
if (!$isYearMode) {
$commentBuilder->where("LOWER(TRIM(semester))", $semesterKey);
}
$commentRows = $commentBuilder->get()->getResultArray();
->where("LOWER(TRIM(semester))", $semesterKey)
->orderBy('created_at', 'DESC')
->get()
->getResultArray();
foreach ($commentRows as $row) {
$sid = (int)($row['student_id'] ?? 0);
$sem = strtolower(trim((string)($row['semester'] ?? '')));
@@ -1838,15 +1925,14 @@ class GradingController extends Controller
$statusMap = [];
$noteMap = [];
if (!empty($studentIds)) {
$flagBuilder = $this->db->table('current_flag')
$flagRows = $this->db->table('current_flag')
->select('student_id, semester, flag_state, open_description, close_description')
->where('flag', 'grade')
->where('school_year', $schoolYear)
->whereIn('student_id', $studentIds);
if (!$isYearMode) {
$flagBuilder->where("LOWER(TRIM(semester))", $semesterKey);
}
$flagRows = $flagBuilder->get()->getResultArray();
->whereIn('student_id', $studentIds)
->where("LOWER(TRIM(semester))", $semesterKey)
->get()
->getResultArray();
foreach ($flagRows as $row) {
$sid = (int)($row['student_id'] ?? 0);
if ($sid <= 0) continue;
@@ -1884,6 +1970,7 @@ class GradingController extends Controller
return $rows;
}
private function fetchBelowSixtyEmailRow(int $studentId, string $schoolYear, string $semester): array
{
$semesterKey = strtolower(trim($semester));