72 lines
4.0 KiB
PHP
72 lines
4.0 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\Admin\AuditController;
|
|
use App\Http\Controllers\Admin\MemberController;
|
|
use App\Http\Controllers\Admin\PrizeController;
|
|
use App\Http\Controllers\Admin\SettingController;
|
|
use App\Http\Controllers\AttendanceController;
|
|
use App\Http\Controllers\Auth\LoginController;
|
|
use App\Http\Controllers\CounterController;
|
|
use App\Http\Controllers\DashboardController;
|
|
use App\Http\Controllers\DrawController;
|
|
use App\Http\Controllers\ReportController;
|
|
use App\Models\User;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
// ---- Auth ----
|
|
Route::middleware('guest')->group(function () {
|
|
Route::get('login', [LoginController::class, 'show'])->name('login');
|
|
Route::post('login', [LoginController::class, 'login']);
|
|
});
|
|
Route::post('logout', [LoginController::class, 'logout'])->middleware('auth')->name('logout');
|
|
|
|
Route::get('/', fn () => redirect()->route('dashboard'));
|
|
|
|
Route::middleware('auth')->group(function () {
|
|
Route::get('dashboard', [DashboardController::class, 'index'])->name('dashboard');
|
|
|
|
// ---- Kaunter Kehadiran (admin + petugas kaunter) ----
|
|
Route::middleware('role:' . User::ROLE_ADMIN . '|' . User::ROLE_KAUNTER)->group(function () {
|
|
Route::get('kaunter', [CounterController::class, 'index'])->name('counter.index');
|
|
Route::get('kaunter/cari', [CounterController::class, 'search'])->name('counter.search');
|
|
Route::post('kaunter/hadir', [CounterController::class, 'store'])->name('counter.store');
|
|
|
|
Route::get('kehadiran', [AttendanceController::class, 'index'])->name('attendance.index');
|
|
});
|
|
|
|
// ---- Modul Cabutan + Laporan (admin + petugas cabutan/urusetia) ----
|
|
Route::middleware('role:' . User::ROLE_ADMIN . '|' . User::ROLE_CABUTAN)->group(function () {
|
|
Route::get('cabutan', [DrawController::class, 'index'])->name('draw.index');
|
|
Route::get('cabutan/pool', [DrawController::class, 'pool'])->name('draw.pool');
|
|
Route::post('cabutan/spin', [DrawController::class, 'spin'])->name('draw.spin');
|
|
Route::post('cabutan/confirm', [DrawController::class, 'confirm'])->name('draw.confirm');
|
|
Route::post('cabutan/batal', [DrawController::class, 'cancel'])->name('draw.cancel');
|
|
|
|
Route::get('laporan', [ReportController::class, 'index'])->name('reports.index');
|
|
Route::get('laporan/export/{type}', [ReportController::class, 'export'])->name('reports.export');
|
|
});
|
|
|
|
// ---- Admin sahaja ----
|
|
Route::middleware('role:' . User::ROLE_ADMIN)->prefix('admin')->name('admin.')->group(function () {
|
|
Route::get('anggota', [MemberController::class, 'index'])->name('members.index');
|
|
Route::get('anggota/import', [MemberController::class, 'showImport'])->name('members.import');
|
|
Route::post('anggota/import', [MemberController::class, 'import'])->name('members.import.store');
|
|
Route::get('anggota/{member}/edit', [MemberController::class, 'edit'])->name('members.edit');
|
|
Route::put('anggota/{member}', [MemberController::class, 'update'])->name('members.update');
|
|
Route::delete('anggota/{member}', [MemberController::class, 'destroy'])->name('members.destroy');
|
|
|
|
Route::get('hadiah', [PrizeController::class, 'index'])->name('prizes.index');
|
|
Route::get('hadiah/import', [PrizeController::class, 'showImport'])->name('prizes.import');
|
|
Route::post('hadiah/import', [PrizeController::class, 'import'])->name('prizes.import.store');
|
|
Route::get('hadiah/{prize}/edit', [PrizeController::class, 'edit'])->name('prizes.edit');
|
|
Route::put('hadiah/{prize}', [PrizeController::class, 'update'])->name('prizes.update');
|
|
Route::delete('hadiah/{prize}', [PrizeController::class, 'destroy'])->name('prizes.destroy');
|
|
|
|
Route::get('tetapan', [SettingController::class, 'index'])->name('settings.index');
|
|
Route::put('tetapan/sesi', [SettingController::class, 'updateSession'])->name('settings.session');
|
|
Route::post('tetapan/reset', [SettingController::class, 'reset'])->name('settings.reset');
|
|
|
|
Route::get('audit', [AuditController::class, 'index'])->name('audit.index');
|
|
});
|
|
});
|