Files
laravel_school_api/app/Domain/IslamicSundaySchool/Attendance/Policies/IslamicSundaySchoolAttendanceStatusPolicy.php
T
2026-05-30 01:11:35 -04:00

23 lines
907 B
PHP

<?php
declare(strict_types=1);
namespace App\Domain\IslamicSundaySchool\Attendance\Policies;
use App\Domain\SchoolCore\Attendance\Contracts\AttendanceStatusPolicyContract;
use App\Domain\SchoolCore\Attendance\DTO\AttendanceSessionView;
use App\Domain\SchoolCore\Attendance\DTO\AttendanceStatusResult;
use App\Domain\SchoolCore\Context\SchoolContext;
use DateTimeInterface;
final class IslamicSundaySchoolAttendanceStatusPolicy implements AttendanceStatusPolicyContract
{
public function statusForScan(SchoolContext $context, AttendanceSessionView $session, DateTimeInterface $timestamp): AttendanceStatusResult
{
$lateThreshold = $session->startsAt->modify('+15 minutes');
$status = $timestamp > $lateThreshold ? 'late' : 'present';
return new AttendanceStatusResult($status, $status === 'late', $status === 'late' ? 'Configured extension late window.' : null);
}
}