From 5cc33cce2c1e5ae065e88c537829084f06872f62 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Sun, 30 Aug 2026 21:11:30 +0700 Subject: [PATCH] feat: implement announcement management with CRUD functionality --- .../AnnouncementController.php | 12 ++++++------ .../AnnouncementRequest.php | 2 +- .../AnnouncementService.php | 2 +- resources/js/components/app-sidebar.tsx | 17 ++++++----------- .../{ => manage}/announcements/columns.tsx | 0 .../admin/{ => manage}/announcements/index.tsx | 2 +- routes/admin.php | 16 ++++++++-------- 7 files changed, 23 insertions(+), 28 deletions(-) rename app/Http/Controllers/Admin/{Announcements => Manage}/AnnouncementController.php (82%) rename app/Http/Requests/Admin/{Announcements => Manage}/AnnouncementRequest.php (91%) rename app/Services/Admin/{Announcements => Manage}/AnnouncementService.php (97%) rename resources/js/pages/admin/{ => manage}/announcements/columns.tsx (100%) rename resources/js/pages/admin/{ => manage}/announcements/index.tsx (99%) diff --git a/app/Http/Controllers/Admin/Announcements/AnnouncementController.php b/app/Http/Controllers/Admin/Manage/AnnouncementController.php similarity index 82% rename from app/Http/Controllers/Admin/Announcements/AnnouncementController.php rename to app/Http/Controllers/Admin/Manage/AnnouncementController.php index 238dff1..570bf25 100644 --- a/app/Http/Controllers/Admin/Announcements/AnnouncementController.php +++ b/app/Http/Controllers/Admin/Manage/AnnouncementController.php @@ -1,12 +1,12 @@ $this->service->paginated( ...$request->validatedWithDefaults(), departmentId: $request->validated('department_id'), @@ -37,7 +37,7 @@ public function store(AnnouncementRequest $request): RedirectResponse Inertia::flash('toast', ['type' => 'success', 'message' => 'Pengumuman berhasil ditambahkan.']); - return to_route('admin.announcements.index'); + return to_route('admin.manage.announcements.index'); } public function update(AnnouncementRequest $request, Announcement $announcement): RedirectResponse @@ -46,7 +46,7 @@ public function update(AnnouncementRequest $request, Announcement $announcement) Inertia::flash('toast', ['type' => 'success', 'message' => 'Pengumuman berhasil diperbarui.']); - return to_route('admin.announcements.index'); + return to_route('admin.manage.announcements.index'); } public function destroy(Announcement $announcement): RedirectResponse diff --git a/app/Http/Requests/Admin/Announcements/AnnouncementRequest.php b/app/Http/Requests/Admin/Manage/AnnouncementRequest.php similarity index 91% rename from app/Http/Requests/Admin/Announcements/AnnouncementRequest.php rename to app/Http/Requests/Admin/Manage/AnnouncementRequest.php index 2bc6bf1..cc12a46 100644 --- a/app/Http/Requests/Admin/Announcements/AnnouncementRequest.php +++ b/app/Http/Requests/Admin/Manage/AnnouncementRequest.php @@ -1,6 +1,6 @@ name('store'); Route::delete('{enrollment}', [ClassEnrollmentController::class, 'destroy'])->name('destroy'); }); + + Route::prefix('announcements')->name('announcements.')->group(function () { + Route::get('/', [AnnouncementController::class, 'index'])->name('index'); + Route::post('/', [AnnouncementController::class, 'store'])->name('store'); + Route::put('{announcement}', [AnnouncementController::class, 'update'])->name('update'); + Route::delete('{announcement}', [AnnouncementController::class, 'destroy'])->name('destroy'); + }); }); Route::middleware('role:mahasiswa')->prefix('course-registrations')->name('student.course-registrations.')->group(function () { @@ -85,13 +92,6 @@ Route::get('{submission}', [CourseRegistrationController::class, 'show'])->name('show'); }); - Route::prefix('admin/announcements')->name('admin.announcements.')->group(function () { - Route::get('/', [AnnouncementController::class, 'index'])->name('index'); - Route::post('/', [AnnouncementController::class, 'store'])->name('store'); - Route::put('{announcement}', [AnnouncementController::class, 'update'])->name('update'); - Route::delete('{announcement}', [AnnouncementController::class, 'destroy'])->name('destroy'); - }); - Route::prefix('admin/finances')->name('admin.finances.')->group(function () { Route::resource('tuition-invoices', TuitionInvoiceController::class)->except(['create', 'edit', 'show']);