Improve public controls and dashboard student statistics
This commit is contained in:
@@ -7,6 +7,7 @@ use App\Models\Department;
|
||||
use App\Models\DocumentType;
|
||||
use App\Models\SchoolClass;
|
||||
use App\Models\Student;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use App\Models\StudentAchievement;
|
||||
use App\Models\StudentExit;
|
||||
use App\Models\StudentTransfer;
|
||||
@@ -21,7 +22,9 @@ class DashboardController extends Controller
|
||||
->where('is_required', true)
|
||||
->pluck('id');
|
||||
|
||||
$students = Student::with('documents')->get();
|
||||
$students = Student::with('documents')
|
||||
->where('status', 'active')
|
||||
->get();
|
||||
|
||||
$completion = $this->calculateCompletion($students, $requiredDocumentTypeIds);
|
||||
|
||||
@@ -42,24 +45,46 @@ class DashboardController extends Controller
|
||||
->filter(fn (array $item) => $item['total'] > 0)
|
||||
->values();
|
||||
|
||||
$activeAcademicYearId = AcademicYear::query()->where('is_active', true)->value('id');
|
||||
|
||||
$studentStatisticsByClass = SchoolClass::query()
|
||||
->with(['academicYear', 'department'])
|
||||
->when($activeAcademicYearId, fn (Builder $query) => $query->where('academic_year_id', $activeAcademicYearId))
|
||||
->withCount([
|
||||
'students as active_students_count' => fn (Builder $query) => $query->where('status', 'active'),
|
||||
'students as male_students_count' => fn (Builder $query) => $query->where('status', 'active')->where('gender', 'L'),
|
||||
'students as female_students_count' => fn (Builder $query) => $query->where('status', 'active')->where('gender', 'P'),
|
||||
])
|
||||
->orderBy('level')
|
||||
->orderBy('name')
|
||||
->get()
|
||||
->filter(fn (SchoolClass $classRoom) => $classRoom->active_students_count > 0)
|
||||
->values();
|
||||
|
||||
return view('dashboard', [
|
||||
'stats' => [
|
||||
'academicYears' => AcademicYear::count(),
|
||||
'departments' => Department::count(),
|
||||
'classes' => SchoolClass::count(),
|
||||
'documentTypes' => DocumentType::count(),
|
||||
'students' => Student::count(),
|
||||
'students' => Student::where('status', 'active')->count(),
|
||||
'studentsDropped' => StudentExit::count(),
|
||||
'studentsTransferred' => StudentTransfer::count(),
|
||||
'studentsGraduated' => Student::where('status', 'graduated')->count(),
|
||||
'studentAchievements' => StudentAchievement::count(),
|
||||
'studentsWithAchievements' => StudentAchievement::distinct('student_id')->count('student_id'),
|
||||
'studentAchievements' => StudentAchievement::query()
|
||||
->whereHas('student', fn (Builder $query) => $query->where('status', 'active'))
|
||||
->count(),
|
||||
'studentsWithAchievements' => StudentAchievement::query()
|
||||
->whereHas('student', fn (Builder $query) => $query->where('status', 'active'))
|
||||
->distinct('student_id')
|
||||
->count('student_id'),
|
||||
'studentsCompleteDocuments' => $completion['complete'],
|
||||
'studentsIncompleteDocuments' => $completion['incomplete'],
|
||||
'studentsVerifiedDocuments' => $completion['verified_complete'],
|
||||
'studentsUnverifiedDocuments' => $completion['verified_incomplete'],
|
||||
],
|
||||
'studentGenderByAcademicYear' => $studentGenderByAcademicYear,
|
||||
'studentStatisticsByClass' => $studentStatisticsByClass,
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user