245 lines
9.6 KiB
PHP
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');
|
|
});
|