165 lines
11 KiB
PHP
165 lines
11 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\AdminController;
|
|
use App\Http\Controllers\DashboardController;
|
|
use App\Http\Controllers\MenuController;
|
|
use App\Http\Controllers\CartController;
|
|
use App\Http\Controllers\CheckoutController;
|
|
use App\Http\Controllers\MejaController;
|
|
use App\Http\Controllers\TransaksiController;
|
|
use App\Http\Controllers\RiwayatController;
|
|
use App\Http\Controllers\KritikSaranController;
|
|
use App\Http\Controllers\ReservasiController;
|
|
use App\Http\Controllers\Admin\MenuController as AdminMenuController;
|
|
use App\Http\Controllers\Admin\TableController;
|
|
use App\Http\Controllers\Admin\ReservationController;
|
|
use Illuminate\Support\Facades\Route;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use App\Http\Controllers\AuthController;
|
|
use App\Http\Controllers\UserProfileController;
|
|
use App\Http\Controllers\ProfileController;
|
|
use App\Http\Controllers\LandingPageController;
|
|
use App\Http\Controllers\Admin\GalleryController;
|
|
use App\Http\Controllers\BestsellerController;
|
|
|
|
// Authentication Routes
|
|
Route::middleware('guest')->group(function () {
|
|
Route::get('login', [AuthController::class, 'showLogin'])->name('login');
|
|
Route::post('login', [AuthController::class, 'login']);
|
|
Route::get('register', [AuthController::class, 'showRegister'])->name('register');
|
|
Route::post('register', [AuthController::class, 'register']);
|
|
|
|
// Forgot Password Routes
|
|
Route::get('forgot-password', [AuthController::class, 'showForgotPassword'])->name('password.request');
|
|
Route::post('forgot-password', [AuthController::class, 'sendResetLink'])->name('password.email');
|
|
Route::get('reset-password/{token}', [AuthController::class, 'showResetPassword'])->name('password.reset');
|
|
Route::post('reset-password', [AuthController::class, 'resetPassword'])->name('password.update');
|
|
});
|
|
|
|
// Admin Routes
|
|
Route::group(['middleware' => ['auth', 'admin'], 'prefix' => 'admin', 'as' => 'admin.'], function () {
|
|
Route::get('/dashboard', [AdminController::class, 'dashboard'])->name('dashboard');
|
|
Route::get('/chart-data', [AdminController::class, 'ajaxChartData'])->name('chart-data');
|
|
|
|
// Menu Management Routes
|
|
Route::get('/menu', [AdminMenuController::class, 'index'])->name('menu');
|
|
Route::post('/menu', [AdminMenuController::class, 'store'])->name('menu.store');
|
|
Route::put('/menu/{menuItem}', [AdminMenuController::class, 'update'])->name('menu.update');
|
|
Route::delete('/menu/{menuItem}', [AdminMenuController::class, 'destroy'])->name('menu.destroy');
|
|
|
|
// Table Management Routes
|
|
Route::get('/tables', [TableController::class, 'index'])->name('tables');
|
|
Route::post('/tables', [TableController::class, 'store'])->name('tables.store');
|
|
Route::put('/tables/{table}', [TableController::class, 'update'])->name('tables.update');
|
|
Route::delete('/tables/{table}', [TableController::class, 'destroy'])->name('tables.destroy');
|
|
Route::get('/tables/{table}/schedule', [TableController::class, 'getSchedule'])->name('tables.schedule');
|
|
|
|
// Reservation Management Routes
|
|
Route::get('/reservations', [ReservationController::class, 'index'])->name('reservations');
|
|
Route::post('/reservations', [ReservationController::class, 'store'])->name('reservations.store');
|
|
Route::get('/reservations/time-slots', [ReservationController::class, 'getAvailableTimeSlots'])->name('reservations.time-slots');
|
|
Route::put('/reservations/{reservation}', [ReservationController::class, 'update'])->name('reservations.update');
|
|
Route::delete('/reservations/{reservation}', [ReservationController::class, 'destroy'])->name('reservations.destroy');
|
|
Route::get('/tables/{meja}/schedule', [ReservationController::class, 'getSchedule']);
|
|
|
|
// Carousel Management Routes
|
|
Route::get('/carousel', [App\Http\Controllers\Admin\CarouselController::class, 'index'])->name('carousel.index');
|
|
Route::post('/carousel', [App\Http\Controllers\Admin\CarouselController::class, 'store'])->name('carousel.store');
|
|
Route::put('/carousel/{carousel}', [App\Http\Controllers\Admin\CarouselController::class, 'update'])->name('carousel.update');
|
|
Route::delete('/carousel/{carousel}', [App\Http\Controllers\Admin\CarouselController::class, 'destroy'])->name('carousel.destroy');
|
|
Route::post('/carousel/reorder', [App\Http\Controllers\Admin\CarouselController::class, 'reorder'])->name('carousel.reorder');
|
|
|
|
// Gallery Routes
|
|
Route::get('/gallery', [GalleryController::class, 'index'])->name('gallery.index');
|
|
Route::get('/gallery/category/{category}', [GalleryController::class, 'getCategory'])->name('gallery.get-category');
|
|
Route::get('/gallery/image/{image}', [GalleryController::class, 'getImage'])->name('gallery.get-image');
|
|
Route::post('/gallery/category', [GalleryController::class, 'storeCategory'])->name('gallery.store-category');
|
|
Route::put('/gallery/category/{category}', [GalleryController::class, 'updateCategory'])->name('gallery.update-category');
|
|
Route::delete('/gallery/category/{category}', [GalleryController::class, 'destroyCategory'])->name('gallery.destroy-category');
|
|
Route::post('/gallery/category/{category}/image', [GalleryController::class, 'storeImage'])->name('gallery.store-image');
|
|
Route::put('/gallery/image/{image}', [GalleryController::class, 'updateImage'])->name('gallery.update-image');
|
|
Route::delete('/gallery/image/{image}', [GalleryController::class, 'destroyImage'])->name('gallery.destroy-image');
|
|
|
|
// Bestseller Routes
|
|
Route::get('/bestseller', [BestsellerController::class, 'index'])->name('bestseller.index');
|
|
Route::post('/bestseller', [BestsellerController::class, 'store'])->name('bestseller.store');
|
|
Route::put('/bestseller/{bestseller}', [BestsellerController::class, 'update'])->name('bestseller.update');
|
|
Route::delete('/bestseller/{bestseller}', [BestsellerController::class, 'destroy'])->name('bestseller.destroy');
|
|
|
|
// Kritik & Saran Management
|
|
Route::get('/kritiksaran', [App\Http\Controllers\Admin\KritikSaranController::class, 'index'])->name('kritiksaran.index');
|
|
Route::delete('/kritiksaran/{id}', [App\Http\Controllers\Admin\KritikSaranController::class, 'destroy'])->name('kritiksaran.destroy');
|
|
});
|
|
|
|
// Public Routes
|
|
Route::get('/', [LandingPageController::class, 'index'])->name('landing');
|
|
|
|
// Midtrans Notification Handler (must be public)
|
|
Route::post('/transaksi/notification/handler', [TransaksiController::class, 'notification'])->name('transaksi.notification');
|
|
|
|
// Protected Routes
|
|
Route::middleware('auth')->group(function () {
|
|
Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
|
|
|
|
// Profile Routes
|
|
Route::get('/profile', [ProfileController::class, 'show'])->name('profile.show');
|
|
Route::get('/profile/edit', [ProfileController::class, 'edit'])->name('profile.edit');
|
|
Route::put('/profile', [ProfileController::class, 'update'])->name('profile.update');
|
|
Route::put('/profile/password', [ProfileController::class, 'updatePassword'])->name('profile.password.update');
|
|
Route::delete('/profile/picture', [ProfileController::class, 'deleteProfilePicture'])->name('profile.picture.delete');
|
|
|
|
Route::get('/menu', [MenuController::class, 'index'])->name('menu.index');
|
|
|
|
// Meja Routes
|
|
Route::get('/meja', [MejaController::class, 'index'])->name('meja.index');
|
|
Route::post('/meja/select', [MejaController::class, 'selectMeja'])->name('meja.select');
|
|
Route::get('/meja/{id}/check-availability', [MejaController::class, 'checkAvailability'])->name('meja.checkAvailability');
|
|
Route::get('/meja/next-available-dates', [MejaController::class, 'getNextAvailableDates'])->name('meja.nextAvailableDates');
|
|
Route::post('/meja/{id}/update-status', [MejaController::class, 'updateStatus'])->name('meja.updateStatus');
|
|
|
|
// Reservasi Routes
|
|
Route::get('/reservasi', [ReservasiController::class, 'index'])->name('reservasi.index');
|
|
Route::post('/reservasi', [ReservasiController::class, 'store'])->name('reservasi.store');
|
|
Route::get('/reservasi/success/{id}', [ReservasiController::class, 'success'])->name('reservasi.success');
|
|
Route::post('/reservasi/check-availability', [ReservasiController::class, 'checkAvailability'])->name('reservasi.check-availability');
|
|
Route::get('/get-available-slots', [ReservasiController::class, 'getAvailableSlots'])->name('reservasi.getAvailableSlots');
|
|
|
|
// Transaksi Routes
|
|
Route::get('/transaksi', [TransaksiController::class, 'index'])->name('transaksi.index');
|
|
Route::get('/transaksi/{id}', [TransaksiController::class, 'show'])->name('transaksi.show');
|
|
Route::put('/transaksi/{transaksi}/cancel', [TransaksiController::class, 'cancel'])->name('transaksi.cancel');
|
|
Route::get('/transaksi/{id}/detail', [TransaksiController::class, 'detail'])->name('transaksi.detail');
|
|
Route::get('/transaksi/{id}/check-status', [TransaksiController::class, 'checkStatus'])->name('transaksi.check-status');
|
|
Route::post('/transaksi/store', [TransaksiController::class, 'store'])->name('transaksi.store');
|
|
Route::post('/transaksi/{id}/confirm', [TransaksiController::class, 'confirm'])->name('transaksi.confirm');
|
|
|
|
// Midtrans Routes (for client side)
|
|
Route::get('/transaksi/finish', [TransaksiController::class, 'finish'])->name('transaksi.finish');
|
|
Route::get('/transaksi/unfinish', [TransaksiController::class, 'unfinish'])->name('transaksi.unfinish');
|
|
Route::get('/transaksi/error', [TransaksiController::class, 'error'])->name('transaksi.error');
|
|
|
|
Route::get('/riwayat', [RiwayatController::class, 'index'])->name('riwayat');
|
|
Route::get('/kritiksaran', [KritikSaranController::class, 'index'])->name('kritiksaran');
|
|
Route::post('/kritiksaran', [KritikSaranController::class, 'store'])->name('kritiksaran.store');
|
|
|
|
// Cart Routes
|
|
Route::get('/cart', [CartController::class, 'index'])->name('cart.index');
|
|
Route::post('/cart/add', [CartController::class, 'add'])->name('cart.add');
|
|
Route::post('/cart/update', [CartController::class, 'update'])->name('cart.update');
|
|
Route::post('/cart/remove', [CartController::class, 'remove'])->name('cart.remove');
|
|
Route::post('/cart/clear', [CartController::class, 'clear'])->name('cart.clear');
|
|
Route::get('/cart/get', [CartController::class, 'getCart'])->name('cart.get');
|
|
|
|
// Checkout Routes
|
|
Route::get('/checkout', [CheckoutController::class, 'index'])->name('checkout.index');
|
|
Route::post('/checkout/process', [CheckoutController::class, 'process'])->name('checkout.process');
|
|
|
|
Route::post('/logout', [AuthController::class, 'logout'])->name('logout');
|
|
|
|
// User Profile Routes
|
|
Route::get('/profile', [UserProfileController::class, 'show'])->name('user.profile');
|
|
Route::put('/profile/update', [UserProfileController::class, 'updateProfile'])->name('user.profile.update');
|
|
Route::put('/profile/password', [UserProfileController::class, 'updatePassword'])->name('user.password.update');
|
|
Route::delete('/profile/picture', [UserProfileController::class, 'deleteProfilePicture'])->name('user.profile.picture.delete');
|
|
});
|