Files
prn2026/app/Http/Requests/Admin/Setup/UpsertElectionSettingsRequest.php
2026-06-03 08:51:22 +08:00

47 lines
1.3 KiB
PHP

<?php
namespace App\Http\Requests\Admin\Setup;
use Illuminate\Foundation\Http\FormRequest;
class UpsertElectionSettingsRequest extends FormRequest
{
public function authorize(): bool
{
return $this->user()?->hasRole('Admin') === true;
}
/**
* @return array<string, mixed>
*/
public function rules(): array
{
return [
'registration_start_date' => ['required', 'date'],
'registration_end_date' => ['required', 'date', 'after_or_equal:registration_start_date'],
'polling_date' => ['required', 'date', 'after_or_equal:registration_end_date'],
'is_attendance_active' => ['required', 'boolean'],
'is_registration_open_override' => ['nullable', 'in:,0,1'],
];
}
protected function prepareForValidation(): void
{
$this->merge([
'is_attendance_active' => $this->boolean('is_attendance_active'),
'is_registration_open_override' => $this->resolveOverride(),
]);
}
private function resolveOverride(): ?bool
{
$value = $this->input('is_registration_open_override');
if ($value === '' || $value === null) {
return null;
}
return filter_var($value, FILTER_VALIDATE_BOOLEAN);
}
}