fix all issues
This commit is contained in:
@@ -1216,6 +1216,14 @@ class GradingController extends Controller
|
||||
|
||||
$flagModel = new CurrentFlagModel();
|
||||
$semKey = strtolower(trim($semester));
|
||||
$redirectUrl = base_url('grading/below-60');
|
||||
$query = http_build_query([
|
||||
'semester' => $semester,
|
||||
'school_year' => $schoolYear,
|
||||
]);
|
||||
if ($query !== '') {
|
||||
$redirectUrl .= '?' . $query;
|
||||
}
|
||||
|
||||
$existing = $flagModel
|
||||
->where('student_id', $studentId)
|
||||
@@ -1226,11 +1234,14 @@ class GradingController extends Controller
|
||||
|
||||
$userId = (int)(session()->get('user_id') ?? 0) ?: null;
|
||||
$now = utc_now();
|
||||
$ok = true;
|
||||
|
||||
if ($existing) {
|
||||
$data = [
|
||||
'flag_state' => $status,
|
||||
'flag_datetime' => $now,
|
||||
'semester' => $semester,
|
||||
'school_year' => $schoolYear,
|
||||
'updated_at' => $now,
|
||||
];
|
||||
if ($status === 'Open') {
|
||||
@@ -1246,7 +1257,7 @@ class GradingController extends Controller
|
||||
$data['close_description'] = trim($prev . PHP_EOL . $note);
|
||||
}
|
||||
}
|
||||
$flagModel->update((int)$existing['id'], $data);
|
||||
$ok = (bool) $flagModel->update((int)$existing['id'], $data);
|
||||
} else {
|
||||
$row = $this->fetchBelowSixtyEmailRow($studentId, $schoolYear, $semester);
|
||||
$studentName = trim((string)($row['firstname'] ?? '') . ' ' . (string)($row['lastname'] ?? ''));
|
||||
@@ -1269,10 +1280,21 @@ class GradingController extends Controller
|
||||
$data['updated_by_closed'] = $userId;
|
||||
if ($note !== '') $data['close_description'] = $note;
|
||||
}
|
||||
$flagModel->insert($data);
|
||||
$ok = (bool) $flagModel->insert($data);
|
||||
}
|
||||
|
||||
return redirect()->back()->with('status', 'Status updated.');
|
||||
if (!$ok) {
|
||||
log_message('error', 'updateBelowSixtyStatus failed', [
|
||||
'student_id' => $studentId,
|
||||
'semester' => $semester,
|
||||
'school_year' => $schoolYear,
|
||||
'status' => $status,
|
||||
'errors' => $flagModel->errors(),
|
||||
]);
|
||||
return redirect()->to($redirectUrl)->with('error', 'Failed to update status.');
|
||||
}
|
||||
|
||||
return redirect()->to($redirectUrl)->with('status', 'Status updated.');
|
||||
}
|
||||
|
||||
public function scheduleBelowSixty()
|
||||
@@ -1797,9 +1819,10 @@ class GradingController extends Controller
|
||||
}
|
||||
|
||||
$statusMap = [];
|
||||
$noteMap = [];
|
||||
if (!empty($studentIds)) {
|
||||
$flagRows = $this->db->table('current_flag')
|
||||
->select('student_id, flag_state')
|
||||
->select('student_id, flag_state, open_description, close_description')
|
||||
->where('flag', 'grade')
|
||||
->where('school_year', $schoolYear)
|
||||
->where("LOWER(TRIM(semester))", $semesterKey)
|
||||
@@ -1810,6 +1833,12 @@ class GradingController extends Controller
|
||||
$sid = (int)($row['student_id'] ?? 0);
|
||||
if ($sid <= 0) continue;
|
||||
$statusMap[$sid] = (string)($row['flag_state'] ?? '');
|
||||
$openNote = trim((string)($row['open_description'] ?? ''));
|
||||
$closeNote = trim((string)($row['close_description'] ?? ''));
|
||||
$noteMap[$sid] = [
|
||||
'open' => $openNote,
|
||||
'closed' => $closeNote,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1818,6 +1847,15 @@ class GradingController extends Controller
|
||||
$row['comment'] = $commentMap[$sid] ?? '';
|
||||
$flagState = strtolower(trim((string)($statusMap[$sid] ?? '')));
|
||||
$row['status'] = ($flagState === 'closed' || $flagState === 'canceled') ? 'Closed' : 'Open';
|
||||
$noteBag = $noteMap[$sid] ?? ['open' => '', 'closed' => ''];
|
||||
$rawNote = $row['status'] === 'Closed' ? (string)$noteBag['closed'] : (string)$noteBag['open'];
|
||||
if ($rawNote !== '') {
|
||||
$lines = preg_split('/\R/', $rawNote);
|
||||
$lines = array_values(array_filter(array_map('trim', $lines), static fn($val) => $val !== ''));
|
||||
$row['note'] = $lines ? end($lines) : '';
|
||||
} else {
|
||||
$row['note'] = '';
|
||||
}
|
||||
}
|
||||
unset($row);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user