refactor: remove redundant date validation logic from AcademicTermRequest

This commit is contained in:
Yoga Pangestu 2026-09-02 13:26:55 +07:00
parent ded7217dbc
commit 9823b879d8

View File

@ -46,37 +46,11 @@ function ($attribute, $value, $fail) {
'start_date' => [
'required',
'date',
function ($attribute, $value, $fail) {
$academicYear = $this->input('academic_year');
$semester = $this->input('semester');
if ($academicYear && preg_match('/^(\d{4})\/(\d{4})$/', $academicYear, $matches)) {
$startYear = (int) $matches[1];
$endYear = (int) $matches[2];
$dateYear = (int) date('Y', strtotime($value));
$expectedYear = $semester === 'even' ? $endYear : $startYear;
if ($dateYear !== $expectedYear) {
$fail('Start date harus berada di tahun '.$expectedYear.' untuk semester '.($semester === 'even' ? 'Genap' : 'Ganjil').'.');
}
}
},
],
'end_date' => [
'required',
'date',
'after_or_equal:start_date',
function ($attribute, $value, $fail) {
$academicYear = $this->input('academic_year');
$semester = $this->input('semester');
if ($academicYear && preg_match('/^(\d{4})\/(\d{4})$/', $academicYear, $matches)) {
$startYear = (int) $matches[1];
$endYear = (int) $matches[2];
$dateYear = (int) date('Y', strtotime($value));
$expectedYear = $semester === 'even' ? $endYear : $startYear;
if ($dateYear !== $expectedYear) {
$fail('End date harus berada di tahun '.$expectedYear.' untuk semester '.($semester === 'even' ? 'Genap' : 'Ganjil').'.');
}
}
},
],
'is_active' => ['boolean'],
'open_semesters' => ['nullable', 'array'],