<?php
use App\Http\Controllers\Admin;
use App\Http\Controllers\Frontend;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Frontend Routes
|--------------------------------------------------------------------------
*/
Route::get('/', [Frontend\HomeController::class, 'index'])->name('home');
// Shop
Route::get('/shop', [Frontend\ProductController::class, 'index'])->name('shop');
Route::get('/product/{slug}', [Frontend\ProductController::class, 'show'])->name('product.show');
// Cart
Route::get('/cart', [Frontend\CartController::class, 'index'])->name('cart');
Route::post('/cart/add', [Frontend\CartController::class, 'add'])->name('cart.add');
Route::patch('/cart/{cart}', [Frontend\CartController::class, 'update'])->name('cart.update');
Route::delete('/cart/{cart}', [Frontend\CartController::class, 'remove'])->name('cart.remove');
// Checkout
Route::get('/checkout', [Frontend\CheckoutController::class, 'index'])->name('checkout');
Route::post('/checkout', [Frontend\CheckoutController::class, 'store'])->name('checkout.store');
Route::post('/buy-now', [Frontend\CheckoutController::class, 'buyNow'])->name('buy.now');
Route::get('/thank-you/{orderNumber}', [Frontend\CheckoutController::class, 'success'])->name('order.success');
// Tracking
Route::get('/tracking', [Frontend\CheckoutController::class, 'track'])->name('tracking');
Route::post('/tracking', [Frontend\CheckoutController::class, 'track'])->name('tracking.search');
// Blog
Route::get('/blog', [Frontend\BlogController::class, 'index'])->name('blog.index');
Route::get('/blog/{slug}', [Frontend\BlogController::class, 'show'])->name('blog.show');
// Static pages
Route::view('/contact', 'frontend.contact')->name('contact');
/*
|--------------------------------------------------------------------------
| Admin Routes
|--------------------------------------------------------------------------
*/
Route::prefix('admin')->name('admin.')->group(function () {
// Auth (no middleware)
Route::get('/login', [Admin\AuthController::class, 'showLogin'])->name('login');
Route::post('/login', [Admin\AuthController::class, 'login'])->name('login.post');
// Authenticated admin routes
Route::middleware('admin')->group(function () {
Route::post('/logout', [Admin\AuthController::class, 'logout'])->name('logout');
// Profile / Account
Route::get('/profile', [Admin\ProfileController::class, 'index'])->name('profile.index');
Route::put('/profile', [Admin\ProfileController::class, 'update'])->name('profile.update');
Route::put('/profile/password', [Admin\ProfileController::class, 'updatePassword'])->name('profile.password');
// Dashboard
Route::get('/', [Admin\DashboardController::class, 'index'])->name('dashboard');
Route::get('/dashboard', [Admin\DashboardController::class, 'index']);
// Categories
Route::resource('categories', Admin\CategoryController::class);
// Tags
Route::get('/tags', [Admin\TagController::class, 'index'])->name('tags.index');
Route::post('/tags', [Admin\TagController::class, 'store'])->name('tags.store');
Route::put('/tags/{tag}', [Admin\TagController::class, 'update'])->name('tags.update');
Route::delete('/tags/{tag}', [Admin\TagController::class, 'destroy'])->name('tags.destroy');
// Products
Route::resource('products', Admin\ProductController::class);
Route::delete('/product-images/{image}', [Admin\ProductController::class, 'deleteImage'])->name('products.images.delete');
Route::delete('/product-variations/{variation}', [Admin\ProductController::class, 'deleteVariation'])->name('products.variations.delete');
// Orders
Route::get('/orders', [Admin\OrderController::class, 'index'])->name('orders.index');
Route::get('/orders/{order}', [Admin\OrderController::class, 'show'])->name('orders.show');
Route::patch('/orders/{order}/status', [Admin\OrderController::class, 'updateStatus'])->name('orders.status');
Route::post('/orders/{order}/tracking', [Admin\OrderController::class, 'addTracking'])->name('orders.tracking');
Route::delete('/orders/{order}', [Admin\OrderController::class, 'destroy'])->name('orders.destroy');
// Blog
Route::resource('blog', Admin\BlogController::class);
// Sliders
Route::get('/sliders', [Admin\SliderController::class, 'index'])->name('sliders.index');
Route::post('/sliders', [Admin\SliderController::class, 'store'])->name('sliders.store');
Route::patch('/sliders/{slider}', [Admin\SliderController::class, 'update'])->name('sliders.update');
Route::delete('/sliders/{slider}', [Admin\SliderController::class, 'destroy'])->name('sliders.destroy');
// Settings
Route::get('/settings', [Admin\SettingsController::class, 'index'])->name('settings.index');
Route::put('/settings', [Admin\SettingsController::class, 'update'])->name('settings.update');
// License
Route::get('/license', [Admin\LicenseController::class, 'index'])->name('license.index');
Route::post('/license/refresh', [Admin\LicenseController::class, 'refresh'])->name('license.refresh');
// Menu Management
Route::get('/menus', [Admin\MenuController::class, 'index'])->name('menus.index');
Route::post('/menus', [Admin\MenuController::class, 'store'])->name('menus.store');
Route::put('/menus', [Admin\MenuController::class, 'update'])->name('menus.update');
Route::delete('/menus/{menuItem}', [Admin\MenuController::class, 'destroy'])->name('menus.destroy');
});
});