33 lines
885 B
PHP
33 lines
885 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Domain\IslamicSundaySchool\Attendance;
|
|
|
|
use App\Domain\SchoolCore\Context\SchoolContext;
|
|
use App\Domain\SchoolCore\Contracts\AttendancePolicyContract;
|
|
use DateTimeInterface;
|
|
|
|
final class IslamicSundaySchoolAttendancePolicy implements AttendancePolicyContract
|
|
{
|
|
public function isSchoolDay(SchoolContext $context, DateTimeInterface $date): bool
|
|
{
|
|
return (int) $date->format('N') === 7;
|
|
}
|
|
|
|
public function determineStatus(SchoolContext $context, DateTimeInterface $scanTime, array $session): string
|
|
{
|
|
$startsAt = $session['starts_at'] ?? null;
|
|
if ($startsAt instanceof DateTimeInterface && $scanTime > $startsAt) {
|
|
return 'late';
|
|
}
|
|
|
|
return 'present';
|
|
}
|
|
|
|
public function duplicateScanWindowSeconds(SchoolContext $context): int
|
|
{
|
|
return 600;
|
|
}
|
|
}
|