Files
alrahma_sunday_school_api/app/Services/Parents/ParentAttendanceService.php
T
root 90f9857b06
API CI/CD / Validate (composer + pint) (push) Successful in 3m7s
API CI/CD / Test (PHPUnit) (push) Failing after 5m46s
API CI/CD / Build frontend assets (push) Successful in 1m2s
API CI/CD / Security audit (push) Failing after 49s
API CI/CD / Deploy to shared hosting (PHP) (push) Has been skipped
security fix and fix parent pages
2026-07-06 02:14:16 -04:00

42 lines
1.4 KiB
PHP

<?php
namespace App\Services\Parents;
use Illuminate\Support\Facades\DB;
class ParentAttendanceService
{
public function __construct(private ParentConfigService $configService) {}
public function listAttendance(int $parentId, ?string $schoolYear = null): array
{
$context = $this->configService->context();
$selectedYear = $schoolYear ?: $context['school_year'];
$rows = DB::table('attendance_data')
->select('students.firstname', 'students.lastname', 'attendance_data.date', 'attendance_data.status', 'attendance_data.reason')
->join('students', 'students.id', '=', 'attendance_data.student_id')
->where('students.parent_id', $parentId)
->where('attendance_data.school_year', $selectedYear)
->whereRaw("LOWER(TRIM(attendance_data.status)) IN ('absent', 'late')")
->orderBy('attendance_data.date', 'desc')
->get()
->map(fn ($row) => (array) $row)
->all();
$schoolYears = DB::table('attendance_data')
->select('school_year')
->distinct()
->orderBy('school_year', 'desc')
->get()
->map(fn ($row) => (array) $row)
->all();
return [
'attendance' => $rows,
'schoolYears' => $schoolYears,
'selectedYear' => $selectedYear,
];
}
}