get(); return view('welcome', compact('pakets')); }); // Route untuk sewa yang bisa diakses tanpa login Route::get('/sewa', [SewaController::class, 'index'])->name('sewa.index'); // Route untuk Authentication (untuk guest) Route::middleware('guest')->group(function () { Route::get('/login', [AuthController::class, 'showLoginForm'])->name('login'); Route::post('/login', [AuthController::class, 'login'])->name('login.post'); Route::get('/register', [AuthController::class, 'showRegisterForm'])->name('register'); Route::post('/register', [AuthController::class, 'register'])->name('register.post'); }); // Route untuk logout Route::post('/logout', [AuthController::class, 'logout'])->name('logout'); // Route untuk pembatalan pesanan Route::middleware(['auth'])->group(function () { Route::get('/riwayat/cancel/{id}', [RiwayatController::class, 'showCancelForm'])->name('riwayat.cancel-form'); Route::put('/riwayat/cancel/{id}/process', [RiwayatController::class, 'processCancel'])->name('riwayat.process-cancel'); // Chat Routes Route::get('/chat', [ChatController::class, 'index'])->name('chat.index'); Route::get('/chat/{user_id}', [ChatController::class, 'show'])->name('chat.show'); Route::post('/chat/{user_id}', [ChatController::class, 'store'])->name('chat.store'); Route::get('/chat/{user_id}/messages', [ChatController::class, 'getMessages'])->name('chat.messages'); Route::get('/chat/unread-count', [ChatController::class, 'getUnreadCount'])->name('chat.unreadCount'); Route::post('/chat/{user_id}/mark-as-read', [ChatController::class, 'markAsRead'])->name('chat.markAsRead'); }); // Route yang membutuhkan autentikasi Route::middleware(['auth'])->group(function () { // Dashboard Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard'); // Profile Route::get('/profile', [ProfileController::class, 'index'])->name('profile.index'); Route::put('/profile', [ProfileController::class, 'update'])->name('profile.update'); // Pengguna Route::get('/pengguna', [PenggunaController::class, 'index'])->name('pengguna'); Route::get('/pengguna/tambah', [PenggunaController::class, 'create'])->name('pengguna.create'); Route::post('/pengguna', [PenggunaController::class, 'store'])->name('pengguna.store'); Route::delete('/pengguna/{id}', [PenggunaController::class, 'destroy'])->name('pengguna.destroy'); // Users (data pengguna biasa) Route::get('/users', [UserController::class, 'index'])->name('users'); Route::delete('/users/{id}', [UserController::class, 'destroy'])->name('users.destroy'); // Admin Route::get('/admin', [AdminController::class, 'index'])->name('admin'); Route::get('/admin/tambah', [AdminController::class, 'create'])->name('admin.create'); Route::post('/admin', [AdminController::class, 'store'])->name('admin.store'); Route::get('/admin/{id}/edit', [AdminController::class, 'edit'])->name('admin.edit'); Route::put('/admin/{id}', [AdminController::class, 'update'])->name('admin.update'); Route::delete('/admin/{id}', [AdminController::class, 'destroy'])->name('admin.destroy'); // Barang Route::get('/barang', [BarangController::class, 'index'])->name('barang'); Route::get('/barang/tambah', [BarangController::class, 'create'])->name('barang.create'); Route::post('/barang', [BarangController::class, 'store'])->name('barang.store'); Route::get('/barang/{id}/edit', [BarangController::class, 'edit'])->name('barang.edit'); Route::put('/barang/{id}', [BarangController::class, 'update'])->name('barang.update'); Route::delete('/barang/{id}', [BarangController::class, 'destroy'])->name('barang.destroy'); // Paket (untuk semua user) Route::get('/paket', [PaketController::class, 'index'])->name('paket.index'); // Khusus Admin Route::middleware(['admin'])->group(function () { // Paket Management Route::get('/paket/tambah', [PaketController::class, 'create'])->name('paket.create'); Route::post('/paket', [PaketController::class, 'store'])->name('paket.store'); Route::get('/paket/{id}/edit', [PaketController::class, 'edit'])->name('paket.edit'); Route::put('/paket/{id}', [PaketController::class, 'update'])->name('paket.update'); Route::delete('/paket/{id}', [PaketController::class, 'destroy'])->name('paket.destroy'); Route::post('/paket/{id}/activate', [PaketController::class, 'activate'])->name('paket.activate'); Route::post('/paket/{id}/activate-all', [PaketController::class, 'activateAll'])->name('paket.activate-all'); }); // Input Stock Route::get('/input-stock', [StockController::class, 'index'])->name('input-stock'); Route::post('/input-stock', [StockController::class, 'store'])->name('input-stock.store'); Route::get('/input-stock/{id}/edit', [StockController::class, 'edit'])->name('input-stock.edit'); Route::put('/input-stock/{id}', [StockController::class, 'update'])->name('input-stock.update'); Route::get('/input-stock/{id}/kelola-barang', [StockController::class, 'kelolaBarang'])->name('input-stock.kelola-barang'); Route::get('/input-stock/{id}/barang', [StockController::class, 'getBarangPaket'])->name('input-stock.barang'); Route::post('/input-stock/{id}/barang', [StockController::class, 'tambahBarang'])->name('input-stock.tambah-barang'); Route::delete('/input-stock/{paketId}/barang/{barangId}', [StockController::class, 'hapusBarang'])->name('input-stock.hapus-barang'); // PaketBarang Route::put('/paket-barang/{id}', [PaketBarangController::class, 'update'])->name('paket-barang.update'); Route::delete('/paket-barang/{id}', [PaketBarangController::class, 'destroy'])->name('paket-barang.destroy'); // Sewa Routes Route::prefix('sewa')->name('sewa.')->group(function () { Route::get('/create/{id}', [SewaController::class, 'create'])->name('create'); Route::post('/', [SewaController::class, 'store'])->name('store'); Route::get('/{id}', [SewaController::class, 'show'])->name('show'); Route::post('/{id}/upload-bukti', [SewaController::class, 'uploadBukti'])->name('upload-bukti'); Route::post('/{id}/upload-jaminan', [SewaController::class, 'uploadJaminan'])->name('upload-jaminan'); Route::post('/{id}/batal', [SewaController::class, 'batal'])->name('batal'); Route::get('/riwayat', [SewaController::class, 'riwayat'])->name('riwayat'); }); // Riwayat untuk customer Route::get('/riwayat', [RiwayatController::class, 'index'])->name('riwayat'); Route::get('/riwayat/{id}', [RiwayatController::class, 'show'])->name('riwayat.show'); Route::put('/riwayat/{id}/batal', [RiwayatController::class, 'cancel'])->name('riwayat.batal'); Route::delete('/riwayat/{id}/hapus', [RiwayatController::class, 'hapus'])->name('riwayat.hapus'); // Admin Routes Route::middleware(['admin'])->prefix('admin')->name('admin.')->group(function () { // Riwayat Routes untuk admin Route::get('/riwayat', [RiwayatController::class, 'adminIndex'])->name('riwayat'); Route::get('/riwayat/{id}', [RiwayatController::class, 'show'])->name('riwayat.show'); Route::put('/riwayat/{id}/status', [RiwayatController::class, 'updateStatus'])->name('riwayat.status'); Route::get('/riwayat/{id}/update-payment', [RiwayatController::class, 'showUpdatePaymentForm'])->name('riwayat.show-update-payment'); // Route::put('/riwayat/{id}/update-payment', [RiwayatController::class, 'updatePayment'])->name('riwayat.update-payment'); // Route::post('/riwayat/update-status/{id}', [RiwayatController::class, 'updateStatus'])->name('riwayat.updateStatus'); Route::post('/riwayat/update-status/{id}', [\App\Http\Controllers\RiwayatController::class, 'updateStatus'])->name('riwayat.updateStatus'); Route::delete('/riwayat/hapus/{id}', [\App\Http\Controllers\RiwayatController::class, 'hapus']); Route::get('/riwayat', [\App\Http\Controllers\RiwayatController::class, 'index'])->name('riwayat'); // Route untuk mengaktifkan stok dari riwayat Route::post('/riwayat/{id}/activate-stock', [\App\Http\Controllers\RiwayatController::class, 'activateStock'])->name('riwayat.activate-stock'); // Route untuk pesanan yang dibatalkan Route::get('/cancelled-orders', [App\Http\Controllers\Admin\DashboardController::class, 'cancelledOrders'])->name('cancelled-orders'); Route::get('/cancelled-orders/{id}', [App\Http\Controllers\Admin\DashboardController::class, 'showCancelledOrder'])->name('cancelled-orders.show'); Route::get('/cancelled-orders-count', [App\Http\Controllers\Admin\DashboardController::class, 'getCancelledOrdersCount'])->name('cancelled-orders.count'); Route::get('/recent-cancellations', [App\Http\Controllers\Admin\DashboardController::class, 'getRecentCancellations'])->name('recent-cancellations'); // Verifikasi Pembayaran Route::get('/verifikasi', [App\Http\Controllers\Admin\VerifikasiController::class, 'index'])->name('verifikasi.index'); Route::post('/verifikasi/{id}/approve', [App\Http\Controllers\Admin\VerifikasiController::class, 'approve'])->name('verifikasi.approve'); Route::post('/verifikasi/{id}/reject', [App\Http\Controllers\Admin\VerifikasiController::class, 'reject'])->name('verifikasi.reject'); Route::get('/verifikasi/alasan-penolakan', [App\Http\Controllers\Admin\VerifikasiController::class, 'getAlasanPenolakan'])->name('verifikasi.alasan-penolakan'); // Laporan Transaksi Route::get('/reports/transactions', [App\Http\Controllers\Admin\ReportController::class, 'transactions'])->name('reports.transactions'); }); // Chat Routes Route::get('/chat/latest-messages/{user_id}', [ChatController::class, 'getLatestMessages'])->name('chat.latestMessages'); Route::get('/chat/{user_id}/messages', [ChatController::class, 'getNewMessages'])->name('chat.messages'); }); // Reroute dari dashboard/users ke pengguna Route::get('/dashboard/users', function () { return redirect()->route('pengguna'); })->name('dashboard.users'); // Admin Routes Route::middleware(['auth', 'role:admin'])->prefix('admin')->group(function () { Route::get('/dashboard', [AdminController::class, 'dashboard'])->name('admin.dashboard'); Route::post('/save-rekening', [AdminController::class, 'saveRekening'])->name('admin.save-rekening'); // ... other admin routes ... }); // Customer Routes Route::middleware(['auth', 'role:customer'])->prefix('customer')->group(function () { Route::get('/dashboard', [App\Http\Controllers\Customer\DashboardController::class, 'index'])->name('customer.dashboard'); // Paket - hanya view Route::get('/paket', [PaketController::class, 'index'])->name('customer.paket'); // Sewa Route::get('/sewa', [SewaController::class, 'index'])->name('customer.sewa'); Route::get('/sewa/create/{id}', [SewaController::class, 'create'])->name('customer.sewa.create'); Route::post('/sewa', [SewaController::class, 'store'])->name('customer.sewa.store'); Route::get('/sewa/{id}', [SewaController::class, 'show'])->name('customer.sewa.show'); Route::post('/sewa/{id}/upload-bukti', [SewaController::class, 'uploadBukti'])->name('customer.sewa.upload-bukti'); // Riwayat Route::get('/riwayat', [RiwayatController::class, 'index'])->name('customer.riwayat'); Route::get('/riwayat/{id}', [RiwayatController::class, 'show'])->name('customer.riwayat.show'); Route::put('/riwayat/{id}/cancel', [RiwayatController::class, 'cancel'])->name('customer.riwayat.cancel'); }); // Routes untuk manajemen ongkir kota (admin only) Route::middleware(['auth', 'admin'])->prefix('admin')->name('admin.')->group(function () { Route::resource('ongkir-kota', OngkirKotaController::class); }); // Routes untuk Hubungi Kami Route::get('/contact', [ContactInfoController::class, 'show'])->name('contact.show'); Route::middleware(['auth', 'admin'])->group(function () { Route::get('/admin/contact', [ContactInfoController::class, 'index'])->name('contact.index'); Route::post('/admin/contact', [ContactInfoController::class, 'store'])->name('contact.store'); }); Route::get('/paket/{id}/detail', [PaketController::class, 'detail'])->name('paket.detail'); Route::put('/admin/riwayat/{id}/update-status', [App\Http\Controllers\Admin\ReportController::class, 'updateStatus'])->name('admin.riwayat.update-status');