feat: implement announcement management with CRUD functionality
This commit is contained in:
parent
26a6771448
commit
5cc33cce2c
@ -1,12 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Admin\Announcements;
|
namespace App\Http\Controllers\Admin\Manage;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
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\Http\Requests\PaginatedRequest;
|
||||||
use App\Models\Announcement;
|
use App\Models\Announcement;
|
||||||
use App\Services\Admin\Announcements\AnnouncementService;
|
use App\Services\Admin\Manage\AnnouncementService;
|
||||||
use App\Services\Admin\Master\DepartmentService;
|
use App\Services\Admin\Master\DepartmentService;
|
||||||
use Illuminate\Http\RedirectResponse;
|
use Illuminate\Http\RedirectResponse;
|
||||||
use Inertia\Inertia;
|
use Inertia\Inertia;
|
||||||
@ -21,7 +21,7 @@ public function __construct(
|
|||||||
|
|
||||||
public function index(PaginatedRequest $request): Response
|
public function index(PaginatedRequest $request): Response
|
||||||
{
|
{
|
||||||
return Inertia::render('admin/announcements/index', [
|
return Inertia::render('admin/manage/announcements/index', [
|
||||||
'announcements' => $this->service->paginated(
|
'announcements' => $this->service->paginated(
|
||||||
...$request->validatedWithDefaults(),
|
...$request->validatedWithDefaults(),
|
||||||
departmentId: $request->validated('department_id'),
|
departmentId: $request->validated('department_id'),
|
||||||
@ -37,7 +37,7 @@ public function store(AnnouncementRequest $request): RedirectResponse
|
|||||||
|
|
||||||
Inertia::flash('toast', ['type' => 'success', 'message' => 'Pengumuman berhasil ditambahkan.']);
|
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
|
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.']);
|
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
|
public function destroy(Announcement $announcement): RedirectResponse
|
||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Requests\Admin\Announcements;
|
namespace App\Http\Requests\Admin\Manage;
|
||||||
|
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
use Illuminate\Validation\Rule;
|
use Illuminate\Validation\Rule;
|
||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Services\Admin\Announcements;
|
namespace App\Services\Admin\Manage;
|
||||||
|
|
||||||
use App\Models\Announcement;
|
use App\Models\Announcement;
|
||||||
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
|
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 attendancesRoute } from '@/routes/admin/academic-classes/attendances';
|
||||||
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 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 announcementsRoute } from '@/routes/admin/manage/announcements';
|
||||||
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 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';
|
||||||
@ -114,6 +114,11 @@ const data: {
|
|||||||
url: courseClassesRoute.url(),
|
url: courseClassesRoute.url(),
|
||||||
icon: School,
|
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',
|
label: 'Keuangan',
|
||||||
items: [
|
items: [
|
||||||
|
|||||||
@ -26,7 +26,7 @@ import {
|
|||||||
destroy,
|
destroy,
|
||||||
store,
|
store,
|
||||||
update,
|
update,
|
||||||
} from '@/routes/admin/announcements';
|
} from '@/routes/admin/manage/announcements';
|
||||||
import type {
|
import type {
|
||||||
Announcement,
|
Announcement,
|
||||||
AnnouncementDepartment,
|
AnnouncementDepartment,
|
||||||
@ -5,10 +5,10 @@
|
|||||||
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;
|
||||||
use App\Http\Controllers\Admin\Announcements\AnnouncementController;
|
|
||||||
use App\Http\Controllers\Admin\FeedbackController;
|
use App\Http\Controllers\Admin\FeedbackController;
|
||||||
use App\Http\Controllers\Admin\Finances\TuitionInvoiceController;
|
use App\Http\Controllers\Admin\Finances\TuitionInvoiceController;
|
||||||
use App\Http\Controllers\Admin\Finances\TuitionPaymentController;
|
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\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\Manage\CourseRegistrationController;
|
||||||
@ -76,6 +76,13 @@
|
|||||||
Route::post('/', [ClassEnrollmentController::class, 'store'])->name('store');
|
Route::post('/', [ClassEnrollmentController::class, 'store'])->name('store');
|
||||||
Route::delete('{enrollment}', [ClassEnrollmentController::class, 'destroy'])->name('destroy');
|
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 () {
|
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::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::prefix('admin/finances')->name('admin.finances.')->group(function () {
|
||||||
Route::resource('tuition-invoices', TuitionInvoiceController::class)->except(['create', 'edit', 'show']);
|
Route::resource('tuition-invoices', TuitionInvoiceController::class)->except(['create', 'edit', 'show']);
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user