feat: implement announcement management with CRUD functionality
This commit is contained in:
parent
26a6771448
commit
5cc33cce2c
@ -1,12 +1,12 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin\Announcements;
|
||||
namespace App\Http\Controllers\Admin\Manage;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Admin\Announcements\AnnouncementRequest;
|
||||
use App\Http\Requests\Admin\Manage\AnnouncementRequest;
|
||||
use App\Http\Requests\PaginatedRequest;
|
||||
use App\Models\Announcement;
|
||||
use App\Services\Admin\Announcements\AnnouncementService;
|
||||
use App\Services\Admin\Manage\AnnouncementService;
|
||||
use App\Services\Admin\Master\DepartmentService;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Inertia\Inertia;
|
||||
@ -21,7 +21,7 @@ public function __construct(
|
||||
|
||||
public function index(PaginatedRequest $request): Response
|
||||
{
|
||||
return Inertia::render('admin/announcements/index', [
|
||||
return Inertia::render('admin/manage/announcements/index', [
|
||||
'announcements' => $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
|
||||
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests\Admin\Announcements;
|
||||
namespace App\Http\Requests\Admin\Manage;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Validation\Rule;
|
||||
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\Admin\Announcements;
|
||||
namespace App\Services\Admin\Manage;
|
||||
|
||||
use App\Models\Announcement;
|
||||
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
|
||||
@ -37,9 +37,9 @@ import { index as assignmentsRoute } from '@/routes/admin/academic-classes/assig
|
||||
import { index as attendancesRoute } from '@/routes/admin/academic-classes/attendances';
|
||||
import { index as materialsRoute } from '@/routes/admin/academic-classes/materials';
|
||||
import { index as schedulesRoute } from '@/routes/admin/academic-classes/schedules';
|
||||
import { index as announcementsRoute } from '@/routes/admin/announcements';
|
||||
import { index as feedbackRoute } from '@/routes/admin/feedback';
|
||||
import { index as tuitionInvoicesRoute } from '@/routes/admin/finances/tuition-invoices';
|
||||
import { index as announcementsRoute } from '@/routes/admin/manage/announcements';
|
||||
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';
|
||||
@ -114,6 +114,11 @@ const data: {
|
||||
url: courseClassesRoute.url(),
|
||||
icon: School,
|
||||
},
|
||||
{
|
||||
name: 'Pengumuman',
|
||||
url: announcementsRoute.url(),
|
||||
icon: Megaphone,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@ -141,16 +146,6 @@ const data: {
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
label: 'Pengumuman',
|
||||
items: [
|
||||
{
|
||||
name: 'Pengumuman',
|
||||
url: announcementsRoute.url(),
|
||||
icon: Megaphone,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
label: 'Keuangan',
|
||||
items: [
|
||||
|
||||
@ -26,7 +26,7 @@ import {
|
||||
destroy,
|
||||
store,
|
||||
update,
|
||||
} from '@/routes/admin/announcements';
|
||||
} from '@/routes/admin/manage/announcements';
|
||||
import type {
|
||||
Announcement,
|
||||
AnnouncementDepartment,
|
||||
@ -5,10 +5,10 @@
|
||||
use App\Http\Controllers\Admin\AcademicClasses\MaterialController;
|
||||
use App\Http\Controllers\Admin\AcademicClasses\ScheduleController;
|
||||
use App\Http\Controllers\Admin\AcademicClasses\SubmissionController;
|
||||
use App\Http\Controllers\Admin\Announcements\AnnouncementController;
|
||||
use App\Http\Controllers\Admin\FeedbackController;
|
||||
use App\Http\Controllers\Admin\Finances\TuitionInvoiceController;
|
||||
use App\Http\Controllers\Admin\Finances\TuitionPaymentController;
|
||||
use App\Http\Controllers\Admin\Manage\AnnouncementController;
|
||||
use App\Http\Controllers\Admin\Manage\ClassEnrollmentController;
|
||||
use App\Http\Controllers\Admin\Manage\CourseClassController;
|
||||
use App\Http\Controllers\Admin\Manage\CourseRegistrationController;
|
||||
@ -76,6 +76,13 @@
|
||||
Route::post('/', [ClassEnrollmentController::class, 'store'])->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']);
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user