Merge pull request 'feat: implement Course Registration management with CRUD functionality' (#64) from refactor/move-Course-Registration-from-academic-class-to-manage into dev

Reviewed-on: #64
This commit is contained in:
pangestu 2026-08-30 15:11:46 +08:00
commit 783a0f6dda
7 changed files with 18 additions and 18 deletions

View File

@ -1,13 +1,13 @@
<?php <?php
namespace App\Http\Controllers\Admin\AcademicClasses; namespace App\Http\Controllers\Admin\Manage;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\AcademicClasses\CourseRegistrationRequest; use App\Http\Requests\Admin\Manage\CourseRegistrationRequest;
use App\Http\Requests\PaginatedRequest; use App\Http\Requests\PaginatedRequest;
use App\Models\CourseRegistration; use App\Models\CourseRegistration;
use App\Services\Admin\AcademicClasses\CourseRegistrationService;
use App\Services\Admin\Manage\CourseClassService; use App\Services\Admin\Manage\CourseClassService;
use App\Services\Admin\Manage\CourseRegistrationService;
use App\Services\Admin\Master\AcademicTermService; use App\Services\Admin\Master\AcademicTermService;
use App\Services\Admin\Users\LecturerService; use App\Services\Admin\Users\LecturerService;
use App\Services\Admin\Users\StudentService; use App\Services\Admin\Users\StudentService;
@ -27,7 +27,7 @@ public function __construct(
public function index(PaginatedRequest $request): Response public function index(PaginatedRequest $request): Response
{ {
return Inertia::render('admin/academic-classes/course-registrations/index', [ return Inertia::render('admin/manage/course-registrations/index', [
'registrations' => $this->service->paginated( 'registrations' => $this->service->paginated(
...$request->validatedWithDefaults(), ...$request->validatedWithDefaults(),
status: $request->validated('status'), status: $request->validated('status'),
@ -47,7 +47,7 @@ public function store(CourseRegistrationRequest $request): RedirectResponse
Inertia::flash('toast', ['type' => 'success', 'message' => 'Registrasi KRS berhasil ditambahkan.']); Inertia::flash('toast', ['type' => 'success', 'message' => 'Registrasi KRS berhasil ditambahkan.']);
return to_route('admin.academic-classes.course-registrations.index'); return to_route('admin.manage.course-registrations.index');
} }
public function update(CourseRegistrationRequest $request, CourseRegistration $courseRegistration): RedirectResponse public function update(CourseRegistrationRequest $request, CourseRegistration $courseRegistration): RedirectResponse
@ -56,7 +56,7 @@ public function update(CourseRegistrationRequest $request, CourseRegistration $c
Inertia::flash('toast', ['type' => 'success', 'message' => 'Registrasi KRS berhasil diperbarui.']); Inertia::flash('toast', ['type' => 'success', 'message' => 'Registrasi KRS berhasil diperbarui.']);
return to_route('admin.academic-classes.course-registrations.index'); return to_route('admin.manage.course-registrations.index');
} }
public function destroy(CourseRegistration $courseRegistration): RedirectResponse public function destroy(CourseRegistration $courseRegistration): RedirectResponse

View File

@ -1,6 +1,6 @@
<?php <?php
namespace App\Http\Requests\Admin\AcademicClasses; namespace App\Http\Requests\Admin\Manage;
use App\Enums\RegistrationStatus; use App\Enums\RegistrationStatus;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;

View File

@ -1,6 +1,6 @@
<?php <?php
namespace App\Services\Admin\AcademicClasses; namespace App\Services\Admin\Manage;
use App\Enums\RegistrationStatus; use App\Enums\RegistrationStatus;
use App\Models\ClassEnrollment; use App\Models\ClassEnrollment;

View File

@ -38,13 +38,13 @@ import {
} from '@/components/ui/sidebar'; } from '@/components/ui/sidebar';
import { index as assignmentsRoute } from '@/routes/admin/academic-classes/assignments'; import { index as assignmentsRoute } from '@/routes/admin/academic-classes/assignments';
import { index as attendancesRoute } from '@/routes/admin/academic-classes/attendances'; import { index as attendancesRoute } from '@/routes/admin/academic-classes/attendances';
import { index as courseRegistrationsRoute } from '@/routes/admin/academic-classes/course-registrations';
import { index as materialsRoute } from '@/routes/admin/academic-classes/materials'; import { index as materialsRoute } from '@/routes/admin/academic-classes/materials';
import { index as schedulesRoute } from '@/routes/admin/academic-classes/schedules'; import { index as schedulesRoute } from '@/routes/admin/academic-classes/schedules';
import { index as announcementsRoute } from '@/routes/admin/announcements'; import { index as announcementsRoute } from '@/routes/admin/announcements';
import { index as feedbackRoute } from '@/routes/admin/feedback'; import { index as feedbackRoute } from '@/routes/admin/feedback';
import { index as tuitionInvoicesRoute } from '@/routes/admin/finances/tuition-invoices'; import { index as tuitionInvoicesRoute } from '@/routes/admin/finances/tuition-invoices';
import { index as courseClassesRoute } from '@/routes/admin/manage/course-classes'; import { index as courseClassesRoute } from '@/routes/admin/manage/course-classes';
import { index as courseRegistrationsRoute } from '@/routes/admin/manage/course-registrations';
import { index as academicTerm } from '@/routes/admin/master/academic-terms'; import { index as academicTerm } from '@/routes/admin/master/academic-terms';
import { index as coursesRoute } from '@/routes/admin/master/courses'; import { index as coursesRoute } from '@/routes/admin/master/courses';
import { index as departmentsRoute } from '@/routes/admin/master/departments'; import { index as departmentsRoute } from '@/routes/admin/master/departments';
@ -110,6 +110,11 @@ const data: {
{ {
label: 'Kelola', label: 'Kelola',
items: [ items: [
{
name: 'Registrasi KRS',
url: courseRegistrationsRoute.url(),
icon: FileCheck2,
},
{ {
name: 'Kelas Mata Kuliah', name: 'Kelas Mata Kuliah',
url: courseClassesRoute.url(), url: courseClassesRoute.url(),
@ -120,11 +125,6 @@ const data: {
{ {
label: 'Kelas', label: 'Kelas',
items: [ items: [
{
name: 'Registrasi KRS',
url: courseRegistrationsRoute.url(),
icon: FileCheck2,
},
{ {
name: 'Materi', name: 'Materi',
url: materialsRoute.url(), url: materialsRoute.url(),

View File

@ -24,7 +24,7 @@ import {
destroy, destroy,
store, store,
update, update,
} from '@/routes/admin/academic-classes/course-registrations'; } from '@/routes/admin/manage/course-registrations';
import type { import type {
CourseRegistration, CourseRegistration,
CourseRegistrationCourseClass, CourseRegistrationCourseClass,

View File

@ -2,7 +2,6 @@
use App\Http\Controllers\Admin\AcademicClasses\AssignmentController; use App\Http\Controllers\Admin\AcademicClasses\AssignmentController;
use App\Http\Controllers\Admin\AcademicClasses\AttendanceController; use App\Http\Controllers\Admin\AcademicClasses\AttendanceController;
use App\Http\Controllers\Admin\AcademicClasses\CourseRegistrationController;
use App\Http\Controllers\Admin\AcademicClasses\MaterialController; use App\Http\Controllers\Admin\AcademicClasses\MaterialController;
use App\Http\Controllers\Admin\AcademicClasses\ScheduleController; use App\Http\Controllers\Admin\AcademicClasses\ScheduleController;
use App\Http\Controllers\Admin\AcademicClasses\SubmissionController; use App\Http\Controllers\Admin\AcademicClasses\SubmissionController;
@ -12,6 +11,7 @@
use App\Http\Controllers\Admin\Finances\TuitionPaymentController; use App\Http\Controllers\Admin\Finances\TuitionPaymentController;
use App\Http\Controllers\Admin\Manage\ClassEnrollmentController; use App\Http\Controllers\Admin\Manage\ClassEnrollmentController;
use App\Http\Controllers\Admin\Manage\CourseClassController; use App\Http\Controllers\Admin\Manage\CourseClassController;
use App\Http\Controllers\Admin\Manage\CourseRegistrationController;
use App\Http\Controllers\Admin\Master\AcademicTermController; use App\Http\Controllers\Admin\Master\AcademicTermController;
use App\Http\Controllers\Admin\Master\CourseController; use App\Http\Controllers\Admin\Master\CourseController;
use App\Http\Controllers\Admin\Master\DepartmentController; use App\Http\Controllers\Admin\Master\DepartmentController;
@ -33,8 +33,6 @@
}); });
Route::prefix('admin/academic-classes')->name('admin.academic-classes.')->group(function () { Route::prefix('admin/academic-classes')->name('admin.academic-classes.')->group(function () {
Route::resource('course-registrations', CourseRegistrationController::class)->except(['create', 'edit', 'show']);
Route::resource('materials', MaterialController::class)->except(['create', 'edit', 'show']); Route::resource('materials', MaterialController::class)->except(['create', 'edit', 'show']);
Route::resource('assignments', AssignmentController::class)->except(['create', 'edit', 'show']); Route::resource('assignments', AssignmentController::class)->except(['create', 'edit', 'show']);
@ -63,6 +61,8 @@
}); });
Route::prefix('admin/manage')->name('admin.manage.')->group(function () { Route::prefix('admin/manage')->name('admin.manage.')->group(function () {
Route::resource('course-registrations', CourseRegistrationController::class)->except(['create', 'edit', 'show']);
Route::resource('course-classes', CourseClassController::class)->except(['create', 'edit', 'show']); Route::resource('course-classes', CourseClassController::class)->except(['create', 'edit', 'show']);
Route::prefix('course-classes/{course_class}/enrollments')->name('course-classes.enrollments.')->group(function () { Route::prefix('course-classes/{course_class}/enrollments')->name('course-classes.enrollments.')->group(function () {