ldc-boutique-cnc/routes/web.php
2022-09-03 16:56:16 +02:00

245 lines
9.6 KiB
PHP

<?php
use Illuminate\Support\Facades\Route;
// FRONT.
use App\Http\Controllers\IndexController;
use App\Http\Controllers\CustomerController;
// BO.
use App\Http\Controllers\Bo\DashboardController;
use App\Http\Controllers\Bo\ContentController;
use App\Http\Controllers\Bo\FaqController;
use App\Http\Controllers\Bo\SettingsController;
use App\Http\Controllers\Bo\OrdersController;
use App\Http\Controllers\Bo\CreneauxController;
// AUTH.
use App\Http\Controllers\Auth\LoginController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
if ((bool)config('bosettings.private_shop')) {
Route::middleware('auth:customer')
->group(function () {
require_once __DIR__ . '/web-shop.php';
});
} else {
require_once __DIR__ . '/web-shop.php';
}
// Must always be public routes.
Route::get('/mentions-legales', [IndexController::class, 'legalNotice'])->name('legal-notice');
Route::get('/politique-de-confidentialite', [IndexController::class, 'privacy'])->name('privacy');
Route::namespace('App\Http\Controllers\Bo')
->prefix('bo')
->name('bo.')
->middleware(['auth', 'is-admin'])
->group(
function () {
Route::get('/', [DashboardController::class, 'index'])->name('dashboard');
Route::match(['get', 'put'], '/content/{key}', [ContentController::class, 'manage'])->name('content');
Route::match(['get', 'put'], '/settings', [SettingsController::class, 'manage'])->name('settings');
Route::match(
['get', 'put'],
'/themesettings',
[SettingsController::class, 'manageTheme']
)->name('themesettings');
// FAQ.
Route::get('/faq', [FaqController::class, 'index'])->name('faq');
Route::post('/ajax/save-faq', [FaqController::class, 'saveDatas']);
Route::post('/ajax/delete-faq', [FaqController::class, 'destroy']);
// Creneaux.
Route::get('/magasins/{id}/creneaux', [CreneauxController::class, 'settings'])->name('creneaux.settings');
Route::post(
'/magasins/{id}/creneaux',
[CreneauxController::class, 'updateSettings']
)->name('creneaux.settings.update');
// Exceptions de collecte.
Route::post(
'/ajax/save-creneaux-exception',
[\App\Http\Controllers\Bo\MagasinsController::class, 'saveExceptions']
);
Route::post(
'/ajax/delete-creneaux-exception',
[\App\Http\Controllers\Bo\MagasinsController::class, 'destroyExceptions']
);
// Recherche d'inco.
Route::post('/ajax/check-inco-data', [\App\Http\Controllers\Bo\ProductsController::class, 'checkIncoData']);
Route::post(
'/ajax/get-inco-images',
[\App\Http\Controllers\Bo\ProductsController::class, 'getPrepareIncoImages']
);
Route::post('/ajax/set-inco-images', [\App\Http\Controllers\Bo\ProductsController::class, 'setIncoImage']);
// Produits.
// Route ajoutée avant la déclaration de route resource.
// Sinon la forme /products/{product} l'emporte lors du routage.
Route::get(
'/products/starred',
[\App\Http\Controllers\Bo\ProductsController::class, 'starred']
)->name('products.starred');
Route::get(
'/products/create/{product_type?}',
[\App\Http\Controllers\Bo\ProductsController::class, 'create']
)->name('products.create');
Route::resource(
'products',
'\App\Http\Controllers\Bo\ProductsController'
)->except(['create', 'show']);
Route::resource(
'slides',
SlidesController::class
)->except(['show']);
Route::resource(
'sliders',
SlidersController::class
)->except(['show']);
Route::resource(
'tags',
TagsController::class
)->except(['show']);
Route::resource(
'promotions',
PromotionsController::class
)->except(['show']);
Route::resource(
'magasins',
MagasinsController::class
)->except(['show']);
Route::resources([
'ranges' => RangesController::class
]);
Route::get(
'/slide/change-order/{id}/{action}',
[App\Http\Controllers\Bo\SlidesController::class, 'changeOrder']
)->name('slides.change-order');
Route::get(
'/tag/change-order/{id}/{action}',
[App\Http\Controllers\Bo\TagsController::class, 'changeOrder']
)->name('tags.change-order');
Route::get(
'/tag/toggle-status/{id}',
[App\Http\Controllers\Bo\TagsController::class, 'toggleStatus']
)->name('tags.toggle-status');
Route::get(
'/customer-info/{id}/{mode?}',
[OrdersController::class, 'getCustomerInfo']
)->name('get-customer-info');
Route::get(
'/magasin-info/{id}/{mode?}',
[App\Http\Controllers\Bo\MagasinsController::class, 'getMagasinInfo']
)->name('get-magasin-info');
// Commandes.
Route::get('/orders', [OrdersController::class, 'index'])->name('orders');
Route::get('/orders/today', [OrdersController::class, 'today'])->name('orders.today');
Route::get('/orders/{reference}', [OrdersController::class, 'orderDetail'])->name('order-detail');
Route::get(
'/orders/{reference}/advance',
[OrdersController::class, 'changeStatus']
)->name('change-order-status');
Route::get('/orders/{reference}/cancel', [OrdersController::class, 'cancelOrder'])->name('cancel-order');
Route::post('/orders/add', [OrdersController::class, 'addProduct'])->name('order-add-product');
}
);
// Actions sur les comptes utilisateurs.
Route::name('auth.')
->group(
function () {
// Bo connect.
Route::get('/bo/login', [LoginController::class, 'index'])->name('login')->middleware('guest');
Route::post('/bo/login', [LoginController::class, 'login'])->name('login.post')->middleware('guest');
Route::get('/bo/logout', [LoginController::class, 'logout'])->name('logout')->middleware('auth:web');
// Customer connect.
Route::get(
'/connexion',
[CustomerController::class, 'authenticateForm']
)->name('connexion')->middleware('guest');
Route::post(
'/connexion',
[CustomerController::class, 'authenticate']
)->name('connexion.post')->middleware('guest');
Route::get(
'/deconnexion',
[CustomerController::class, 'logout']
)->name('deconnexion')->middleware('auth:customer');
// Customer inscription.
Route::get(
'/inscription',
[CustomerController::class, 'registerForm']
)->name('register')->middleware('guest');
Route::post(
'/inscription',
[CustomerController::class, 'register']
)->name('register.post')->middleware('guest');
Route::get('/activer/{hashcode}', [CustomerController::class, 'activate'])->name('activer');
// Formulaire de demande de réinit.
Route::get('/mot-de-passe-oublie', [CustomerController::class, 'forgotPasswordForm'])->name('forgot-password');
// Réinit et envoi mail.
Route::post('/reinitialiser-mdp', [CustomerController::class, 'passwordReset'])->name('reinit-mdp');
// Formulaire reinit.
Route::get(
'/reinitialiser-mdp/{token}',
[CustomerController::class, 'viewChangePassword']
)->name('form-change-mdp');
// Changement en crm.
Route::post(
'/reinitialiser-mdp/{token}',
[CustomerController::class, 'changePassword']
)->name('change-password');
}
);
Route::name('account.')
->prefix('compte')
->middleware('auth:customer')
->group(
function () {
Route::get('/profil', [CustomerController::class, 'dashboard'])->name('dashboard');
Route::post('/profil', [CustomerController::class, 'updateInfos'])->name('update-infos');
Route::post(
'/profil/change-mdp',
[CustomerController::class, 'changePasswordWhenAuthenticated']
)->name('change-password');
Route::get('/commandes', [CustomerController::class, 'myOrders'])->name('my-orders');
Route::get('/commandes/{reference}', [CustomerController::class, 'orderDetail'])->name('order-detail');
}
);
// Tunnel de commande.
Route::prefix('commande')
->name('sales.')
->middleware('auth:customer')
->group(function () {
// Puisqu'on a le middleware on s'épargne une étape.
// Recap.
Route::get('/recap', [OrdersController::class, 'recapOrder' ])->name('recap');
Route::post('/recap', [OrdersController::class, 'store' ])->name('order-init');
// Choice timeslot.
Route::get('/collect/{reference}', [OrdersController::class, 'timeSlotPick' ])->name('pick-slot');
Route::post('/collect', [OrdersController::class, 'setTimeSlot' ])->name('order-save-slot');
// Confirm.
Route::get('/confirm/{reference}', [OrdersController::class, 'confirmOrder' ])->name('confirm');
// Test generation de commande.
Route::get('/generate/{reference}', [OrdersController::class, 'generateOrder' ])->name('generate');
});