feat: update student import and graduation workflows

This commit is contained in:
2026-04-30 00:04:52 +07:00
parent 189b076ab0
commit ac22f8b7c8
51 changed files with 4547 additions and 1287 deletions
@@ -21,7 +21,7 @@ class StudentTransferController extends Controller
$departmentId = $request->get('department_id');
$classId = $request->get('class_id');
$studentTransfers = StudentTransfer::query()
$studentTransfersQuery = StudentTransfer::query()
->with(['academicYear', 'department', 'classRoom'])
->when($search !== '', function ($query) use ($search) {
$query->where(function ($subQuery) use ($search) {
@@ -32,12 +32,25 @@ class StudentTransferController extends Controller
})
->when($academicYearId, fn ($query) => $query->where('academic_year_id', $academicYearId))
->when($departmentId, fn ($query) => $query->where('department_id', $departmentId))
->when($classId, fn ($query) => $query->where('class_id', $classId))
->when($classId, fn ($query) => $query->where('class_id', $classId));
$studentTransfers = (clone $studentTransfersQuery)
->latest('transfer_date')
->latest('id')
->paginate(10)
->withQueryString();
$totalTransfers = StudentTransfer::count();
$withLetterCount = StudentTransfer::query()->whereNotNull('transfer_letter_file_path')->count();
$withoutLetterCount = max($totalTransfers - $withLetterCount, 0);
$thisYearCount = StudentTransfer::query()->whereYear('transfer_date', now()->year)->count();
$latestTransferDate = StudentTransfer::query()->max('transfer_date');
$recentTransfers = StudentTransfer::query()
->latest('transfer_date')
->latest('id')
->limit(3)
->get(['id', 'full_name', 'transfer_date', 'department_id', 'class_id']);
return view('student-transfers.index', [
'studentTransfers' => $studentTransfers,
'search' => $search,
@@ -49,6 +62,15 @@ class StudentTransferController extends Controller
'academicYears' => AcademicYear::orderBy('name')->pluck('name', 'id'),
'departments' => Department::orderBy('name')->pluck('name', 'id'),
'classes' => SchoolClass::orderBy('name')->pluck('name', 'id'),
'summary' => [
'total' => $totalTransfers,
'with_letter' => $withLetterCount,
'without_letter' => $withoutLetterCount,
'this_year' => $thisYearCount,
'latest_transfer_date' => $latestTransferDate,
'filtered' => $studentTransfers->total(),
],
'recentTransfers' => $recentTransfers,
]);
}