Add student achievements module and improve student admin workflows
This commit is contained in:
@@ -65,7 +65,7 @@ class StudentController extends Controller
|
||||
|
||||
$students = Student::query()
|
||||
->select('students.*')
|
||||
->with(['academicYear', 'department', 'classRoom', 'documents.documentType'])
|
||||
->with(['academicYear', 'department', 'classRoom', 'documents.documentType', 'achievements'])
|
||||
->leftJoin('academic_years', 'academic_years.id', '=', 'students.academic_year_id')
|
||||
->leftJoin('departments', 'departments.id', '=', 'students.department_id')
|
||||
->leftJoin('classes', 'classes.id', '=', 'students.class_id')
|
||||
@@ -128,6 +128,25 @@ class StudentController extends Controller
|
||||
: 100;
|
||||
$student->hover_photo_url = $photoDocument?->file_path ? asset('storage/' . $photoDocument->file_path) : null;
|
||||
|
||||
$achievementPriority = [
|
||||
'Internasional' => 6,
|
||||
'Nasional' => 5,
|
||||
'Provinsi' => 4,
|
||||
'Kabupaten/Kota' => 3,
|
||||
'Kecamatan' => 2,
|
||||
'Sekolah' => 1,
|
||||
];
|
||||
|
||||
$topAchievement = $student->achievements
|
||||
->sortByDesc(fn ($achievement) => $achievementPriority[$achievement->level] ?? 0)
|
||||
->first();
|
||||
|
||||
$student->achievement_badge_level = $topAchievement?->level;
|
||||
$student->achievement_badge_count = $student->achievements->count();
|
||||
$student->achievement_badge_title = $topAchievement
|
||||
? sprintf('Siswa berprestasi · %s · %s prestasi', $topAchievement->level ?: 'Prestasi', $student->achievement_badge_count)
|
||||
: null;
|
||||
|
||||
return $student;
|
||||
});
|
||||
|
||||
@@ -177,7 +196,7 @@ class StudentController extends Controller
|
||||
|
||||
public function show(Student $student): View
|
||||
{
|
||||
$student->load(['academicYear', 'department', 'classRoom', 'parents', 'documents.documentType', 'academicHistories.academicYear', 'academicHistories.department', 'academicHistories.classRoom']);
|
||||
$student->load(['academicYear', 'department', 'classRoom', 'parents', 'documents.documentType', 'academicHistories.academicYear', 'academicHistories.department', 'academicHistories.classRoom', 'achievements']);
|
||||
|
||||
$requiredDocumentTypes = DocumentType::where('is_active', true)
|
||||
->where('is_required', true)
|
||||
|
||||
Reference in New Issue
Block a user