Files
2026-06-28 15:14:51 +07:00

201 lines
7.4 KiB
PHP

<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\UserLoginController;
use App\Http\Controllers\ActivityController;
use App\Http\Controllers\NotificationController;
use App\Http\Controllers\Admin\ActivityController as AdminActivityController;
use App\Http\Controllers\Admin\SuperAdminController;
/*
|--------------------------------------------------------------------------
| ROUTE UTAMA
|--------------------------------------------------------------------------
*/
Route::get('/', function () {
return redirect()->route('login');
});
/*
|--------------------------------------------------------------------------
| LOGIN & LOGOUT
|--------------------------------------------------------------------------
*/
Route::get('/login-user', function () {
return view('login-user');
})->name('login');
Route::post('/login-user', [UserLoginController::class, 'login'])
->name('login.user');
Route::post('/logout', [UserLoginController::class, 'logout'])
->name('logout');
/*
|--------------------------------------------------------------------------
| AUTH AREA (CUSTOM SESSION LOGIN)
|--------------------------------------------------------------------------
*/
Route::middleware(['web'])->group(function () {
/*
|--------------------------------------------------------------------------
| AREA USER (PETUGAS / PENGAWAS)
|--------------------------------------------------------------------------
*/
Route::middleware(['role:user'])->group(function () {
// Dashboard Utama User
Route::get('/user/dashboard', [ActivityController::class, 'index'])
->name('user.dashboard');
// Form Input Kegiatan
Route::get('/activity-input', function () {
return view('user.input-activity');
})->name('input.activity');
// Proses Simpan Kegiatan
Route::post('/activities/store', [ActivityController::class, 'store'])
->name('activities.store');
// List & Detail Kegiatan
Route::get('/activity-list', [ActivityController::class, 'list'])
->name('activity.list');
Route::get('/activity-detail/{id}', [ActivityController::class, 'show'])
->name('activity.detail');
// Edit & Update
Route::get('/activity/{id}/edit', [ActivityController::class, 'edit'])
->name('activity.edit');
Route::post('/activity/{id}/update', [ActivityController::class, 'update'])
->name('activity.update');
// Tandai Selesai
Route::post('/activity/{id}/selesai', [ActivityController::class, 'selesai'])
->name('activity.selesai');
Route::post('/activity/{id}/progress', [ActivityController::class, 'storeProgress'])
->name('activity.progress');
});
// Settings User (Dapat diakses oleh semua role)
Route::get('/settings', function () {
return view('user.settings');
})->name('settings');
Route::post('/settings/update', [UserLoginController::class, 'updateSettings'])
->name('settings.update');
// Frontend API Proxy untuk Notifikasi
Route::get('/user/notifications-api', [NotificationController::class, 'getNotifications']);
Route::post('/user/notifications-api/read', [NotificationController::class, 'markAsRead']);
/*
|--------------------------------------------------------------------------
| AREA ADMIN (KASI)
|--------------------------------------------------------------------------
*/
Route::middleware(['role:admin'])->group(function () {
// Dashboard Admin
Route::get('/admin/dashboard', [ActivityController::class, 'adminDashboard'])
->name('admin.dashboard');
// Monitoring Kegiatan Semua User
Route::get('/admin/kegiatan', [AdminActivityController::class, 'index'])
->name('admin.kegiatan.index');
Route::get('/admin/kegiatan/{id}', [AdminActivityController::class, 'show'])
->name('admin.kegiatan.show');
// Manajemen User (Petugas)
Route::get('/admin/users', [UserLoginController::class, 'userList'])
->name('admin.users');
Route::get('/admin/users/create', [UserLoginController::class, 'createUser'])
->name('admin.users.create');
Route::post('/admin/users/store', [UserLoginController::class, 'storeUser'])
->name('admin.users.store');
Route::get('/admin/users/{id}/edit', [UserLoginController::class, 'editUser'])
->name('admin.users.edit');
Route::post('/admin/users/{id}/update', [UserLoginController::class, 'updateUser'])
->name('admin.users.update');
Route::delete('/admin/users/{id}', [UserLoginController::class, 'destroyUser'])
->name('admin.users.destroy');
});
/*
|--------------------------------------------------------------------------
| AREA SUPER ADMIN (KABID)
|--------------------------------------------------------------------------
*/
Route::middleware(['role:superadmin'])->group(function () {
// Dashboard Utama
Route::get('/superadmin/dashboard', [SuperAdminController::class, 'index'])
->name('admin.superadmin.dashboard');
// Kegiatan
Route::get('/superadmin/kegiatan/create', [SuperAdminController::class, 'createKegiatan'])
->name('admin.superadmin.kegiatan.create');
Route::post('/superadmin/kegiatan/store', [SuperAdminController::class, 'storeKegiatan'])
->name('admin.superadmin.kegiatan.store');
Route::get('/superadmin/kegiatan/{id}', [SuperAdminController::class, 'show'])
->name('admin.superadmin.kegiatan.show');
Route::post('/superadmin/kegiatan/{id}/approve', [SuperAdminController::class, 'approve'])
->name('admin.superadmin.kegiatan.approve');
Route::post('/superadmin/kegiatan/{id}/revision', [SuperAdminController::class, 'revision'])
->name('admin.superadmin.kegiatan.revision');
Route::delete('/superadmin/kegiatan/{id}', [SuperAdminController::class, 'destroy'])
->name('admin.superadmin.kegiatan.destroy');
// Arsip
Route::get('/superadmin/arsip', [SuperAdminController::class, 'arsip'])
->name('admin.superadmin.arsip');
Route::post('/superadmin/kegiatan/{id}/archive', [SuperAdminController::class, 'archive'])
->name('admin.superadmin.kegiatan.archive');
// Export
Route::post('/superadmin/unduh-laporan', [SuperAdminController::class, 'export'])
->name('admin.superadmin.export');
// User Management
Route::get('/superadmin/users', [SuperAdminController::class, 'userIndex'])
->name('admin.superadmin.user.index');
Route::get('/superadmin/users/create', [SuperAdminController::class, 'createUser'])
->name('admin.superadmin.user.create');
Route::post('/superadmin/users/store', [SuperAdminController::class, 'storeUser'])
->name('admin.superadmin.user.store');
Route::get('/superadmin/users/{id}/edit', [SuperAdminController::class, 'editUser'])
->name('admin.superadmin.user.edit');
Route::post('/superadmin/users/{id}/update', [SuperAdminController::class, 'updateUser'])
->name('admin.superadmin.user.update');
Route::delete('/superadmin/users/{id}', [SuperAdminController::class, 'destroyUser'])
->name('admin.superadmin.user.destroy');
});
});