Files
prn2026/app/Services/RegistrationPeriodService.php
2026-06-03 08:51:22 +08:00

54 lines
1.5 KiB
PHP

<?php
namespace App\Services;
use App\Models\Election;
use App\Models\ElectionSetting;
use Illuminate\Support\Carbon;
class RegistrationPeriodService
{
public function isOpen(Election $election, ?Carbon $date = null): bool
{
/** @var ElectionSetting|null $setting */
$setting = $election->settings;
if ($setting === null) {
return false;
}
if ($setting->is_registration_open_override !== null) {
return $setting->is_registration_open_override;
}
if (! $setting->is_registration_open) {
return false;
}
$currentDate = ($date ?? now())->toDateString();
return Carbon::parse($setting->registration_start_date)->toDateString() <= $currentDate
&& Carbon::parse($setting->registration_end_date)->toDateString() >= $currentDate;
}
public function closedMessage(Election $election): string
{
/** @var ElectionSetting|null $setting */
$setting = $election->settings;
if ($setting === null) {
return 'Pendaftaran belum dibuka untuk pilihanraya ini.';
}
if ($setting->is_registration_open_override === false || ! $setting->is_registration_open) {
return 'Pendaftaran permohonan petugas telah ditutup.';
}
return 'Pendaftaran dibuka dari '
.Carbon::parse($setting->registration_start_date)->format('d/m/Y')
.' hingga '
.Carbon::parse($setting->registration_end_date)->format('d/m/Y')
.'.';
}
}