feat: implement feedback management system with controller, service, and frontend components
Some checks failed
tests / ci (pull_request) Has been cancelled

This commit is contained in:
Yoga Pangestu 2026-08-25 19:37:00 +07:00
parent ce90904b84
commit e7664de711
8 changed files with 16 additions and 13 deletions

View File

@ -1,12 +1,13 @@
<?php
namespace App\Http\Controllers;
namespace App\Http\Controllers\Admin;
use App\Enums\FeedbackType;
use App\Http\Requests\FeedbackRequest;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\FeedbackRequest;
use App\Http\Requests\PaginatedRequest;
use App\Models\Feedback;
use App\Services\FeedbackService;
use App\Services\Admin\FeedbackService;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Inertia\Inertia;
@ -18,7 +19,7 @@ public function __construct(private readonly FeedbackService $service) {}
public function index(PaginatedRequest $request): Response
{
return Inertia::render('feedback/index', [
return Inertia::render('admin/feedback/index', [
'feedbacks' => $this->service->paginated($request->user(), ...$request->validatedWithDefaults()),
'types' => FeedbackType::options(),
]);
@ -30,7 +31,7 @@ public function store(FeedbackRequest $request): RedirectResponse
Inertia::flash('toast', ['type' => 'success', 'message' => 'Masukan berhasil dikirim.']);
return to_route('feedback.index');
return to_route('admin.feedback.index');
}
public function update(FeedbackRequest $request, Feedback $feedback): RedirectResponse
@ -41,7 +42,7 @@ public function update(FeedbackRequest $request, Feedback $feedback): RedirectRe
Inertia::flash('toast', ['type' => 'success', 'message' => 'Masukan berhasil diperbarui.']);
return to_route('feedback.index');
return to_route('admin.feedback.index');
}
public function destroy(Request $request, Feedback $feedback): RedirectResponse

View File

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

View File

@ -1,6 +1,6 @@
<?php
namespace App\Services;
namespace App\Services\Admin;
use App\Models\Feedback;
use App\Models\User;

View File

@ -41,6 +41,7 @@ import {
SidebarMenuButton,
SidebarMenuItem,
} from '@/components/ui/sidebar';
import { index as feedbackRoute } from '@/routes/admin/feedback';
import { index as academicAdvisingLogsRoute } from '@/routes/admin/manage/academic-advising-logs';
import { index as announcementsRoute } from '@/routes/admin/manage/announcements';
import { index as assignmentsRoute } from '@/routes/admin/manage/assignments';
@ -60,7 +61,6 @@ import { edit as securityRoute } from '@/routes/admin/settings/security';
import { index as administratorsRoute } from '@/routes/admin/users/administrators';
import { index as lecturersRoute } from '@/routes/admin/users/lecturers';
import { index as studentsRoute } from '@/routes/admin/users/students';
import { index as feedbackRoute } from '@/routes/feedback';
const data: {
navMain: (NavGroup | NavItem)[];

View File

@ -24,7 +24,7 @@ import {
destroy,
store,
update,
} from '@/routes/feedback';
} from '@/routes/admin/feedback';
import type { Feedback } from '@/types/feedback';
import { createFeedbackColumns } from './columns';

View File

@ -1,5 +1,6 @@
<?php
use App\Http\Controllers\Admin\FeedbackController;
use App\Http\Controllers\Admin\Manage\AcademicAdvisingLogController;
use App\Http\Controllers\Admin\Manage\AnnouncementController;
use App\Http\Controllers\Admin\Manage\AssignmentController;
@ -100,6 +101,10 @@
Route::inertia('appearance', 'admin/settings/appearance')->name('appearance.edit');
});
Route::resource('admin/feedback', FeedbackController::class)
->except(['create', 'edit', 'show'])
->names('admin.feedback');
Route::prefix('admin/users')->name('admin.users.')->group(function () {
Route::resource('lecturers', LecturerController::class)->except(['show'])->parameters(['lecturers' => 'user']);
Route::patch('lecturers/{user}/reset-password', [LecturerController::class, 'resetPassword'])->name('lecturers.reset_password');

View File

@ -1,6 +1,5 @@
<?php
use App\Http\Controllers\FeedbackController;
use App\Http\Controllers\NotificationController;
use Illuminate\Support\Facades\Route;
@ -15,8 +14,6 @@
Route::patch('{notification}/read', [NotificationController::class, 'markRead'])->name('read');
Route::delete('{notification}', [NotificationController::class, 'destroy'])->name('destroy');
});
Route::resource('feedback', FeedbackController::class)->except(['create', 'edit', 'show']);
});
Route::get('.well-known/passkey-endpoints', function () {