This commit is contained in:
Saufi
2026-06-24 18:30:00 +08:00
commit c0c3d7c09c
122 changed files with 16321 additions and 0 deletions

8
routes/console.php Normal file
View File

@@ -0,0 +1,8 @@
<?php
use Illuminate\Foundation\Inspiring;
use Illuminate\Support\Facades\Artisan;
Artisan::command('inspire', function () {
$this->comment(Inspiring::quote());
})->purpose('Display an inspiring quote');

71
routes/web.php Normal file
View File

@@ -0,0 +1,71 @@
<?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');
});
});