TIF_NGANJUK_E41220820/routes/web.php

117 lines
4.6 KiB
PHP

<?php
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\{
HomeController,
KaryawanController,
GajiController,
PakanController,
AyamController,
HasilController,
KeuanganController,
LaporanController,
ProfilController,
LaporanExportController,
JenisMutasiController
};
use App\Http\Middleware\CheckRole;
require __DIR__ . '/auth.php';
// ROOT
// Route::get('/', function () {
// return redirect()->route('login');
// });
Route::get('/', action: fn() => Auth::check() ? redirect()->route('beranda') : redirect()->route('login'));
// Route::get('/', function () {
// return view('welcome');
// });
// Semua route harus login
Route::middleware('auth')->group(function () {
/*
SEMUA USER LOGIN
*/
Route::get('/beranda', [HomeController::class, 'index'])->name('beranda');
Route::get('/profil', [ProfilController::class, 'index'])->name('profil');
Route::patch('/profil/{id}', [ProfilController::class, 'update'])->name('profil.update');
Route::patch('/profil/{id}/password', [ProfilController::class, 'updatePassword'])
->name('profil.password.update');
/*
ADMIN + KARYAWAN
(tanpa delete)
*/
Route::middleware([CheckRole::class . ':admin,karyawan'])->group(function () {
Route::prefix('pakan')->group(function () {
Route::get('/', [PakanController::class, 'index'])->name('pakan');
Route::post('/store', [PakanController::class, 'store'])->name('pakan.store');
Route::put('/{id}', [PakanController::class, 'update'])->name('pakan.update');
});
Route::prefix('ayam')->group(function () {
Route::get('/', [AyamController::class, 'index'])->name('ayam');
Route::post('/store', [AyamController::class, 'store'])->name('ayam.store');
Route::put('/{id}', [AyamController::class, 'update'])->name('ayam.update');
});
Route::prefix('hasil')->group(function () {
Route::get('/', [HasilController::class, 'index'])->name('hasil');
Route::post('/', [HasilController::class, 'store'])->name('hasil.store');
Route::put('/{id}', [HasilController::class, 'update'])->name('hasil.update');
});
Route::get('/keuangan', [KeuanganController::class, 'index'])->name('keuangan.index');
Route::post('/keuangan', [KeuanganController::class, 'store'])->name('keuangan.store');
Route::put('/keuangan/{id}', [KeuanganController::class, 'update'])->name('keuangan.update');
});
/*
ADMIN ONLY
(boleh delete + master)
*/
Route::middleware([CheckRole::class . ':admin'])->group(function () {
// DELETE data operasional
Route::delete('/pakan/{id}', [PakanController::class, 'destroy'])->name('pakan.delete');
Route::delete('/ayam/{id}', [AyamController::class, 'destroy'])->name('ayam.delete');
Route::delete('/hasil/{id}', [HasilController::class, 'destroy'])->name('hasil.destroy');
Route::delete('/keuangan/{id}', [KeuanganController::class, 'destroy'])->name('keuangan.delete');
// Manajemen karyawan
Route::get('/karyawan', [KaryawanController::class, 'index'])->name('karyawan');
Route::post('/karyawan', [KaryawanController::class, 'store'])->name('karyawan.store');
Route::put('/karyawan/{id}', [KaryawanController::class, 'update'])->name('karyawan.update');
Route::patch('/karyawan/{id}/nonaktif', [KaryawanController::class, 'nonaktifkan'])->name('karyawan.nonaktifkan');
Route::patch('/karyawan/{id}/aktif', [KaryawanController::class, 'aktifkan'])->name('karyawan.aktifkan');
// Gaji & laporan
Route::get('/gaji', [GajiController::class, 'index'])->name('gaji');
Route::post('/gaji', [GajiController::class, 'store'])->name('gaji.store');
Route::get('/laporan', [LaporanController::class, 'index'])->name('laporan');
Route::get('/laporan/export', [LaporanController::class, 'export'])->name('laporan.export');
// JENIS MUTASI (MASTER DATA)
Route::prefix('jenis-mutasi')->group(function () {
Route::get('/', [JenisMutasiController::class, 'index'])->name('jenis-mutasi');
Route::post('/', [JenisMutasiController::class, 'store'])->name('jenis-mutasi.store');
Route::put('/{id}', [JenisMutasiController::class, 'update'])->name('jenis-mutasi.update');
Route::delete('/{id}', [JenisMutasiController::class, 'destroy'])->name('jenis-mutasi.delete');
});
});
});
Route::fallback(function () {
return Auth::check()
? abort(404)
: redirect()->route('login');
});