From ded7217dbc8d394c18d83c59434158c8bb7cc92a Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Wed, 2 Sep 2026 13:20:18 +0700 Subject: [PATCH] feat: rename 'name' to 'academic_year' in AcademicTerm and related components for consistency --- .../Admin/Master/AcademicTermRequest.php | 14 ++++---- .../Admin/Finances/TuitionInvoiceService.php | 2 +- .../Admin/Manage/CourseClassService.php | 2 +- .../Manage/CourseRegistrationService.php | 2 +- .../Admin/Master/AcademicTermService.php | 8 ++--- ..._03_000003_create_academic_terms_table.php | 2 +- database/seeders/AcademicTermSeeder.php | 4 +-- .../finances/tuition-invoices/columns.tsx | 2 +- .../admin/finances/tuition-invoices/index.tsx | 6 +++- .../admin/manage/course-classes/columns.tsx | 2 +- .../admin/manage/course-classes/index.tsx | 6 +++- .../admin/master/academic-terms/columns.tsx | 6 ++-- .../admin/master/academic-terms/index.tsx | 32 ++++++++++--------- resources/js/types/academic-term.ts | 6 ++-- resources/js/types/course-class.ts | 6 +++- resources/js/types/course-registration.ts | 6 +++- resources/js/types/tuition-invoice.ts | 6 +++- 17 files changed, 67 insertions(+), 45 deletions(-) diff --git a/app/Http/Requests/Admin/Master/AcademicTermRequest.php b/app/Http/Requests/Admin/Master/AcademicTermRequest.php index 53d6f0a..ef8701c 100644 --- a/app/Http/Requests/Admin/Master/AcademicTermRequest.php +++ b/app/Http/Requests/Admin/Master/AcademicTermRequest.php @@ -16,13 +16,13 @@ public function authorize(): bool public function rules(): array { return [ - 'name' => [ + 'academic_year' => [ 'required', 'string', 'max:20', function ($attribute, $value, $fail) { if (! preg_match('/^(\d{4})\/(\d{4})$/', $value, $matches)) { - $fail('Format name harus YYYY/YYYY, contoh: 2025/2026.'); + $fail('Format tahun ajaran harus YYYY/YYYY, contoh: 2025/2026.'); return; } @@ -40,16 +40,16 @@ function ($attribute, $value, $fail) { 'string', Rule::in(Semester::values()), Rule::unique('academic_terms')->where(function ($query) { - return $query->where('name', $this->input('name')); + return $query->where('academic_year', $this->input('academic_year')); })->ignore($this->route('academic_term')), ], 'start_date' => [ 'required', 'date', function ($attribute, $value, $fail) { - $name = $this->input('name'); + $academicYear = $this->input('academic_year'); $semester = $this->input('semester'); - if ($name && preg_match('/^(\d{4})\/(\d{4})$/', $name, $matches)) { + if ($academicYear && preg_match('/^(\d{4})\/(\d{4})$/', $academicYear, $matches)) { $startYear = (int) $matches[1]; $endYear = (int) $matches[2]; $dateYear = (int) date('Y', strtotime($value)); @@ -65,9 +65,9 @@ function ($attribute, $value, $fail) { 'date', 'after_or_equal:start_date', function ($attribute, $value, $fail) { - $name = $this->input('name'); + $academicYear = $this->input('academic_year'); $semester = $this->input('semester'); - if ($name && preg_match('/^(\d{4})\/(\d{4})$/', $name, $matches)) { + if ($academicYear && preg_match('/^(\d{4})\/(\d{4})$/', $academicYear, $matches)) { $startYear = (int) $matches[1]; $endYear = (int) $matches[2]; $dateYear = (int) date('Y', strtotime($value)); diff --git a/app/Services/Admin/Finances/TuitionInvoiceService.php b/app/Services/Admin/Finances/TuitionInvoiceService.php index 31e26aa..c0a5d82 100644 --- a/app/Services/Admin/Finances/TuitionInvoiceService.php +++ b/app/Services/Admin/Finances/TuitionInvoiceService.php @@ -33,7 +33,7 @@ public function paginated( ->select(['id', 'student_id', 'academic_term_id', 'amount_due', 'due_date']) ->withSum('payments as paid_total', 'amount_paid') ->withCount('payments') - ->with(['student.user.profile', 'student.department', 'academicTerm:id,name,semester,start_date,end_date']) + ->with(['student.user.profile', 'student.department', 'academicTerm:id,academic_year,semester,start_date,end_date']) ->when($status, fn ($q) => match ($status) { 'paid' => $q->havingRaw('COALESCE(paid_total, 0) >= amount_due'), 'partial' => $q->havingRaw('COALESCE(paid_total, 0) > 0 AND COALESCE(paid_total, 0) < amount_due'), diff --git a/app/Services/Admin/Manage/CourseClassService.php b/app/Services/Admin/Manage/CourseClassService.php index 6640039..aa7f00a 100644 --- a/app/Services/Admin/Manage/CourseClassService.php +++ b/app/Services/Admin/Manage/CourseClassService.php @@ -20,7 +20,7 @@ public function paginated(int $perPage = 25, string $search = '', ?int $academic return CourseClass::query() ->select(['id', 'course_id', 'lecturer_id', 'academic_term_id', 'method']) ->withCount('enrollments') - ->with(['course:id,code,name,department_id', 'lecturer.user.profile', 'academicTerm:id,name,semester,start_date,end_date']) + ->with(['course:id,code,name,department_id', 'lecturer.user.profile', 'academicTerm:id,academic_year,semester,start_date,end_date']) ->when($search, fn ($q) => $q->whereHas('course', fn ($q) => $q->where('name', 'like', "%{$search}%")->orWhere('code', 'like', "%{$search}%"))) ->when($academicTermId, fn ($q) => $q->where('academic_term_id', $academicTermId)) ->when($method, fn ($q) => $q->where('method', $method)) diff --git a/app/Services/Admin/Manage/CourseRegistrationService.php b/app/Services/Admin/Manage/CourseRegistrationService.php index 99a13dc..fbb8081 100644 --- a/app/Services/Admin/Manage/CourseRegistrationService.php +++ b/app/Services/Admin/Manage/CourseRegistrationService.php @@ -113,7 +113,7 @@ public function withDetails(CourseRegistrationSubmission $submission): CourseReg 'student.user.profile', 'student.department.currentLeader.lecturer.user.profile', 'student.academicAdvisor.user.profile', - 'academicTerm:id,name,semester,start_date,end_date', + 'academicTerm:id,academic_year,semester,start_date,end_date', 'reviewer.profile', 'courseRegistrations.courseClass.course', 'logs' => fn ($q) => $q->oldest(), diff --git a/app/Services/Admin/Master/AcademicTermService.php b/app/Services/Admin/Master/AcademicTermService.php index 39a82a5..e70c876 100644 --- a/app/Services/Admin/Master/AcademicTermService.php +++ b/app/Services/Admin/Master/AcademicTermService.php @@ -11,7 +11,7 @@ class AcademicTermService { public function getAllForSelect(): Collection { - return AcademicTerm::select(['id', 'name', 'semester', 'start_date', 'end_date', 'is_active', 'open_semesters'])->latest()->get(); + return AcademicTerm::select(['id', 'academic_year', 'semester', 'start_date', 'end_date', 'is_active', 'open_semesters'])->latest()->get(); } /** @@ -27,8 +27,8 @@ public function getActive(): ?AcademicTerm public function paginated(int $perPage = 25, string $search = '', ?string $semester = null, ?bool $isActive = null): LengthAwarePaginator { return AcademicTerm::query() - ->select(['id', 'name', 'semester', 'start_date', 'end_date', 'is_active', 'open_semesters']) - ->when($search, fn($q) => $q->where('name', 'like', "%{$search}%")) + ->select(['id', 'academic_year', 'semester', 'start_date', 'end_date', 'is_active', 'open_semesters']) + ->when($search, fn($q) => $q->where('academic_year', 'like', "%{$search}%")) ->when($semester, fn($q) => $q->where('semester', $semester)) ->when($isActive !== null, fn($q) => $q->where('is_active', $isActive)) ->latest() @@ -45,7 +45,7 @@ public function create(array $data): AcademicTerm public function update(AcademicTerm $academicTerm, array $data): AcademicTerm { - $academicTerm->name = $data['name']; + $academicTerm->academic_year = $data['academic_year']; $academicTerm->semester = $data['semester']; $academicTerm->start_date = $data['start_date']; $academicTerm->end_date = $data['end_date']; diff --git a/database/migrations/2026_08_03_000003_create_academic_terms_table.php b/database/migrations/2026_08_03_000003_create_academic_terms_table.php index 28091ea..237747e 100644 --- a/database/migrations/2026_08_03_000003_create_academic_terms_table.php +++ b/database/migrations/2026_08_03_000003_create_academic_terms_table.php @@ -11,7 +11,7 @@ public function up(): void { Schema::create('academic_terms', function (Blueprint $table) { $table->id(); - $table->string('name', 20); + $table->string('academic_year', 20); $table->enum('semester', Semester::values()); $table->date('start_date'); $table->date('end_date'); diff --git a/database/seeders/AcademicTermSeeder.php b/database/seeders/AcademicTermSeeder.php index 63cdee2..4083576 100644 --- a/database/seeders/AcademicTermSeeder.php +++ b/database/seeders/AcademicTermSeeder.php @@ -12,7 +12,7 @@ public function run(): void { AcademicTerm::insert([ [ - 'name' => '2026/2027', + 'academic_year' => '2026/2027', 'semester' => Semester::odd->value, 'start_date' => '2026-08-01', 'end_date' => '2027-01-15', @@ -21,7 +21,7 @@ public function run(): void 'updated_at' => now(), ], [ - 'name' => '2026/2027', + 'academic_year' => '2026/2027', 'semester' => Semester::even->value, 'start_date' => '2027-02-01', 'end_date' => '2027-07-15', diff --git a/resources/js/pages/admin/finances/tuition-invoices/columns.tsx b/resources/js/pages/admin/finances/tuition-invoices/columns.tsx index 8cade52..737e3d5 100644 --- a/resources/js/pages/admin/finances/tuition-invoices/columns.tsx +++ b/resources/js/pages/admin/finances/tuition-invoices/columns.tsx @@ -51,7 +51,7 @@ export function createTuitionInvoiceColumns( }, }, { - accessorKey: 'academic_term.name', + accessorKey: 'academic_term.academic_year', header: () => Periode, cell: ({ row }) => { const term = row.original.academic_term; diff --git a/resources/js/pages/admin/finances/tuition-invoices/index.tsx b/resources/js/pages/admin/finances/tuition-invoices/index.tsx index 4ae99fd..1832b18 100644 --- a/resources/js/pages/admin/finances/tuition-invoices/index.tsx +++ b/resources/js/pages/admin/finances/tuition-invoices/index.tsx @@ -69,7 +69,11 @@ import { } from '@/types/tuition-payment'; import { createTuitionInvoiceColumns } from './columns'; -type AcademicTermOption = { id: number; name: string; semester: string }; +type AcademicTermOption = { + id: number; + academic_year: string; + semester: string; +}; type InvoiceSummary = { unpaid_students: number; diff --git a/resources/js/pages/admin/manage/course-classes/columns.tsx b/resources/js/pages/admin/manage/course-classes/columns.tsx index 60a6ca8..49d4752 100644 --- a/resources/js/pages/admin/manage/course-classes/columns.tsx +++ b/resources/js/pages/admin/manage/course-classes/columns.tsx @@ -45,7 +45,7 @@ export function createCourseClassColumns( row.original.lecturer?.user?.profile?.full_name ?? '-', }, { - accessorKey: 'academic_term.name', + accessorKey: 'academic_term.academic_year', header: () => Periode, cell: ({ row }) => { const term = row.original.academic_term; diff --git a/resources/js/pages/admin/manage/course-classes/index.tsx b/resources/js/pages/admin/manage/course-classes/index.tsx index 76fae96..065d9b5 100644 --- a/resources/js/pages/admin/manage/course-classes/index.tsx +++ b/resources/js/pages/admin/manage/course-classes/index.tsx @@ -46,7 +46,11 @@ type Lecturer = { departments: { id: number; name: string }[]; user: { profile: { full_name: string } | null } | null; }; -type AcademicTerm = { id: number; name: string; semester: string }; +type AcademicTerm = { + id: number; + academic_year: string; + semester: string; +}; type Props = { courseClasses: { diff --git a/resources/js/pages/admin/master/academic-terms/columns.tsx b/resources/js/pages/admin/master/academic-terms/columns.tsx index 7eff808..0060cb3 100644 --- a/resources/js/pages/admin/master/academic-terms/columns.tsx +++ b/resources/js/pages/admin/master/academic-terms/columns.tsx @@ -32,11 +32,11 @@ export function createAcademicTermColumns( const columns: ColumnDef[] = [ { - accessorKey: 'name', - header: () => Nama, + accessorKey: 'academic_year', + header: () => Tahun Ajaran, cell: ({ row }) => ( - {row.getValue('name') as string} + {row.getValue('academic_year') as string} ), }, diff --git a/resources/js/pages/admin/master/academic-terms/index.tsx b/resources/js/pages/admin/master/academic-terms/index.tsx index cf34edc..fb52dd2 100644 --- a/resources/js/pages/admin/master/academic-terms/index.tsx +++ b/resources/js/pages/admin/master/academic-terms/index.tsx @@ -182,7 +182,7 @@ export default function AcademicTermIndex({ - `Apakah Anda yakin ingin menghapus periode akademik "${academicTerm.name}"? Tindakan ini tidak dapat dibatalkan.` + `Apakah Anda yakin ingin menghapus periode akademik "${academicTerm.academic_year}"? Tindakan ini tidak dapat dibatalkan.` } onConfirm={handleDelete} /> @@ -241,15 +241,16 @@ function CreateForm({ {({ errors }) => (
-