ldc-boutique-cnc-sable/routes/web-bo.php

110 lines
5.7 KiB
PHP

<?php
declare(strict_types=1);
use App\Http\Controllers\Bo\Auth\LoginController;
use App\Http\Controllers\Bo\DashboardController;
use App\Http\Controllers\Bo\DiscountsController;
use App\Http\Controllers\Bo\EmployeesController;
use App\Http\Controllers\Bo\FaqsController;
use App\Http\Controllers\Bo\OrdersController;
use App\Http\Controllers\Bo\PageController;
use App\Http\Controllers\Bo\PickupExceptionsController;
use App\Http\Controllers\Bo\ProductIncosController;
use App\Http\Controllers\Bo\ProductsController;
use App\Http\Controllers\Bo\RangesController;
use App\Http\Controllers\Bo\SettingsController;
use App\Http\Controllers\Bo\ShopsController;
use App\Http\Controllers\Bo\SlidesController;
use App\Http\Controllers\Bo\TagsController;
use App\Providers\RouteServiceProvider;
use Illuminate\Support\Facades\Route;
Route::name('auth.')->middleware([
'guest:backend',
'throttle:' . RouteServiceProvider::ROUTE_GROUP_WEB_CREDENTIALS,
])->group(function (): void {
Route::get('/login', [LoginController::class, 'showLoginForm'])->name('login');
Route::post('/login', [LoginController::class, 'login'])->name('login.post');
});
Route::post('/logout', [LoginController::class, 'logout'])->name('auth.logout.post');
Route::middleware(['auth:backend', 'has-role:Admin'])->group(function (): void {
// * DASHBOARD
Route::get('/', [DashboardController::class, 'index'])->name('dashboard');
// * STATIC PAGES
Route::resource('pages', PageController::class)->only(['edit', 'update'])
->withoutMiddleware('htmlsanitize')
->middleware('htmlsanitize:content');
// * FAQS
Route::resource('faqs', FaqsController::class)->except(['show'])
->withoutMiddleware('htmlsanitize')
->middleware('htmlsanitize:answer');
Route::patch('/faqs/{faq}/{action}', [FaqsController::class, 'changeOrder'])->name('faqs.change-order');
// * SLIDES
Route::resource('slides', SlidesController::class)->except(['show'])
->withoutMiddleware('htmlsanitize')
->middleware('htmlsanitize:text');
Route::patch('/slides/{slide}/{action}', [SlidesController::class, 'changeOrder'])->name('slides.change-order');
// * TAGS
Route::resource('tags', TagsController::class)->except(['show']);
Route::patch('/tags/{tag}/toggle-status', [TagsController::class, 'toggleStatus'])->name('tags.toggle-status');
Route::patch('/tags/{tag}/{action}', [TagsController::class, 'changeOrder'])->name('tags.change-order');
// * EMPLOYEES
Route::post('/settings/employees/sync', [EmployeesController::class, 'launchSyncJob'])->name('settings.employees.sync');
// * SETTINGS
Route::get('/settings', [SettingsController::class, 'edit'])->name('settings.edit');
Route::put('/settings', [SettingsController::class, 'update'])->name('settings.update');
// * RANGES
Route::resource('ranges', RangesController::class)->except(['show'])
->withoutMiddleware('htmlsanitize')
->middleware('htmlsanitize:description');
Route::patch('/ranges/{range}/toggle-status', [RangesController::class, 'toggleStatus'])->name('ranges.toggle-status');
Route::patch('/ranges/{range}/{action}', [RangesController::class, 'changeOrder'])->name('ranges.change-order');
// * PRODUCTS
Route::resource('products', ProductsController::class)->except(['show'])
->withoutMiddleware('htmlsanitize')
->middleware('htmlsanitize:description');
Route::post('/products/mass-actions', [ProductsController::class, 'massActions'])->name('products.mass-actions');
Route::patch('/products/{product}/toggle-status', [ProductsController::class, 'toggleStatus'])->name('products.toggle-status');
Route::patch('/products/{product}/toggle-star', [ProductsController::class, 'toggleStar'])->name('products.toggle-star');
Route::patch(
'/products/{product}/change-selected-order',
[ProductsController::class, 'changeSelectedOrder']
)->name('products.change-selected-order');
Route::patch('/products/{product}/{action}', [ProductsController::class, 'changeOrder'])->name('products.change-order');
// * PRODUCTS INCO
Route::get('/products/{product}/incos/preview/{no_art}', [ProductIncosController::class, 'preview'])->name('products.incos.preview');
Route::post('/products/{product}/incos/associate', [ProductIncosController::class, 'associate'])->name('products.incos.associate');
Route::post('/products/{product}/incos/sync', [ProductIncosController::class, 'sync'])->name('products.incos.sync');
Route::get('/products/{product}/incos/create', [ProductIncosController::class, 'edit'])->name('products.incos.create');
Route::get('/products/{product}/incos/{inco?}/edit', [ProductIncosController::class, 'edit'])->name('products.incos.edit');
// * MERCHANDISING
Route::get('/products/starred', [ProductsController::class, 'starred'])->name('merch.starred');
Route::resource('discounts', DiscountsController::class)->except(['show']);
// * SHOPS
Route::resource('shops', ShopsController::class)->except(['show']);
Route::get('/shops/{shop}/pickup-exceptions', [ShopsController::class, 'pickupExceptionsEdit'])->name('shops.pickup-exceptions.edit');
Route::put('/shops/{shop}/pickup-exceptions', [ShopsController::class, 'pickupExceptionsUpdate'])->name('shops.pickup-exceptions.update');
// * PICKUP EXCEPTIONS
Route::resource('pickup-exceptions', PickupExceptionsController::class)->except(['show']);
// * ORDERS
Route::get('orders/today', [OrdersController::class, 'today'])->name('orders.today');
Route::resource('orders', OrdersController::class)->only(['index', 'show']);
Route::post('orders/{order}/cancel', [OrdersController::class, 'cancel'])->name('orders.cancel');
});