TIF_NGANJUK_E41220737/routes/web.php

82 lines
3.3 KiB
PHP

<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AuthController;
use App\Http\Controllers\AdminController;
use App\Http\Controllers\CartController;
use App\Http\Controllers\LandingController;
use App\Http\Controllers\Petani\ProdukController;
use App\Http\Controllers\TransaksiController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
*/
// --- PUBLIC ROUTES (Bisa diakses siapa saja) ---
Route::get('/', [LandingController::class, 'index'])->name('home');
Route::get('/shop', [LandingController::class, 'shop'])->name('shop');
Route::get('/produk/{id}', [LandingController::class, 'detail'])->name('produk.detail');
// --- CART ROUTES ---
Route::get('/cart', [CartController::class, 'index'])->name('cart');
Route::post('/cart/add', [CartController::class, 'addToCart'])->name('cart.add');
Route::delete('/cart/remove', [CartController::class, 'remove'])->name('cart.remove');
// --- AUTH ROUTES (Guest Only) ---
Route::middleware('guest')->group(function () {
Route::get('/login', [AuthController::class, 'showLoginForm'])->name('login');
Route::post('/login-proses', [AuthController::class, 'loginProcess'])->name('login.proses');
Route::get('/register', [AuthController::class, 'showRegisterForm'])->name('register');
Route::post('/register-proses', [AuthController::class, 'registerProcess'])->name('register.proses');
});
// Logout
Route::post('/logout', [AuthController::class, 'logout'])->name('logout');
// --- PEMBELI AREA (Wajib Login) ---
Route::middleware(['auth:pembeli'])->group(function () {
// Menampilkan halaman checkout dari cart atau beli langsung
Route::get('/checkout', [TransaksiController::class, 'checkoutPage'])->name('checkout');
// Proses Simpan Transaksi
Route::post('/checkout/process', [TransaksiController::class, 'prosesCheckout'])->name('checkout.proses');
// Riwayat Pesanan
Route::get('/pesanan-saya', [TransaksiController::class, 'pesananSaya'])->name('pesanan.saya');
});
// --- ADMIN AREA ---
Route::middleware(['auth:admin'])->group(function () {
Route::get('/admin/dashboard', [AdminController::class, 'dashboard'])->name('admin.dashboard');
// Petani Verification Logic
Route::controller(AdminController::class)->prefix('admin/verifikasi')->group(function () {
Route::get('/', 'verifikasiIndex')->name('admin.verifikasi.index');
Route::get('/{id}', 'verifikasiShow')->name('admin.verifikasi.show');
Route::post('/{id}/approve', 'verifikasiApprove');
Route::post('/{id}/reject', 'verifikasiReject');
});
});
// --- PETANI AREA ---
Route::middleware(['auth:petani'])->group(function () {
Route::get('/petani/dashboard', function () {
return view('petani.dashboard');
})->name('petani.dashboard');
// CRUD Produk Petani
Route::resource('petani/produk', ProdukController::class)->names('petani.produk');
// Manajemen Pesanan Masuk (Petani)
Route::get('/petani/pesanan', [TransaksiController::class, 'pesananMasuk'])->name('petani.pesanan.index');
Route::patch('/petani/pesanan/{id}', [TransaksiController::class, 'updateStatus'])->name('petani.pesanan.update');
Route::get('/petani/pesanan/{id}', [TransaksiController::class, 'pesananDetail'])->name('petani.pesanan.detail');
});