ldc-legaulois/routes/web.php
2021-10-22 11:07:30 +02:00

313 lines
15 KiB
PHP

<?php
use App\Enums\GeneralConfigType;
use App\Http\Controllers\ActuController;
use App\Http\Controllers\AuthController;
use App\Http\Controllers\BourseController;
use App\Http\Controllers\BoutiqueController;
use App\Http\Controllers\BrandController;
use App\Http\Controllers\BreedingPageController;
use App\Http\Controllers\ClubController;
use App\Http\Controllers\ContactController;
use App\Http\Controllers\CustomerController;
use App\Http\Controllers\EngagementsController;
use App\Http\Controllers\FaqController;
use App\Http\Controllers\HomeController;
use App\Http\Controllers\KitchenSideController;
use App\Http\Controllers\MapController;
use App\Http\Controllers\MomentsController;
use App\Http\Controllers\OCBController;
use App\Http\Controllers\OnePageController;
use App\Http\Controllers\ProductsController;
use App\Http\Controllers\RecipesController;
use App\Http\Controllers\TraceabilityController;
use App\Http\Middleware\Authenticate;
use App\Http\Middleware\EncryptCookies;
use App\Http\Middleware\VerifyCsrfToken;
use App\Http\Middleware\XssSanitizer;
use App\Models\GeneralConfig;
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
use Illuminate\Session\Middleware\StartSession;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Str;
use Illuminate\View\Middleware\ShareErrorsFromSession;
/*
|--------------------------------------------------------------------------
| 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!
|
* ATTENTION chaque route ajoutée peut se retrouver dans le Sitemap si la méthode est GET
* Merci de vérifier si elle doit être incluse, le cas échéant l'ajouter dans Jobs/RefreshSiteMap.php
* pour être exclue du sitemap
*/
require_once __DIR__ . '/web-bo.php';
Route::get('/', [HomeController::class, 'index'])->name('home');
Route::get('/de-smaak-om-te-delen', [OnePageController::class, 'index'])->name('home-nl');
Route::get('/faq', [FaqController::class, 'index'])->name('faq');
Route::post('/faq/{question?}', [FaqController::class, 'updateSatisfactionStat'])->name('faq.updateSatisfactionStat');
Route::view('/mentions-legales', 'front.legals')->name('legal-notice');
Route::view('/charte-de-confidentialite', 'front.charte')->name('chart-conf');
Route::prefix('/produits')
->name('products.')
->group(function () {
Route::get('/', [ProductsController::class, 'index'])->name('index');
Route::get('/departaimants', [ProductsController::class, 'departaimants'])->name('departaimants');
Route::get('/gamme/{slugRange}/{subRange?}', [ProductsController::class, 'filter'])->name('range');
Route::get('/moment-consommations/{slugConsumptionTime}', [ProductsController::class, 'filter'])
->name('consumption-times');
Route::get('/type-viande/{slugMeatType}', [ProductsController::class, 'filter'])->name('meat-type');
});
Route::prefix('/produit')
->name('product.')
->group(function () {
Route::get('/{product}', [ProductsController::class, 'show'])->name('show');
});
Route::prefix('/cote-cuisine')->name('kitchen-side.')->group(function () {
Route::get('/', [RecipesController::class, 'kitchenside'])->name('index');
Route::prefix('/sante-et-nutrition')->name('health-nutrition.')->group(function () {
// redirections Lot2
Route::redirect(
'/dechiffrez-valeurs-nutritionnelles',
'/cote-cuisine/sante-et-nutrition/bienfaits-nutritionnels-de-la-volaille',
301
);
Route::redirect(
'/menu-equilibre',
'/cote-cuisine/sante-et-nutrition/bienfaits-nutritionnels-de-la-volaille',
301
);
Route::redirect(
'/plaisir-et-equilibre',
'/cote-cuisine/sante-et-nutrition/bienfaits-nutritionnels-de-la-volaille',
301
);
Route::redirect(
'/engagement-nutrition',
'/cote-cuisine/sante-et-nutrition/qualite-nutritionelle-le-gaulois-s-engage',
301
);
Route::redirect(
'/',
'/cote-cuisine/sante-et-nutrition/qualite-nutritionelle-le-gaulois-s-engage'
)->name('index');
Route::get('/bienfaits-nutritionnels-de-la-volaille', [KitchenSideController::class, 'nutritionPoultry'])
->name('nutrition-poultry');
Route::get('/qualite-nutritionelle-le-gaulois-s-engage', [KitchenSideController::class, 'nutritionQuality'])
->name('nutrition-quality');
});
});
Route::prefix('/recettes')
->name('recipes.')
->group(function () {
Route::get('/proposer-une-recette', [ContactController::class, 'proposeRecipe'])->name('propose');
Route::post('/rate/{recipe:slug}', [RecipesController::class, 'rate'])->name('rate');
Route::get('/{recipe:slug}', [RecipesController::class, 'show'])->name('show');
Route::get('/{type?}/{value?}', [RecipesController::class, 'index'])->name('index');
});
Route::prefix('/la-marque')
->name('brand.')
->group(function () {
Route::get('/', [BrandController::class, 'index'])->name('index');
Route::get('/saga-publicitaire', [BrandController::class, 'ads'])->name('pub');
Route::get('/tracabilite/search', [TraceabilityController::class, 'search'])->name('traceability-search');
Route::view('/notre-histoire', 'front.brand.history')->name('history');
// redirections Lot2
Route::redirect('/tracabilite', '/la-marque/eleveurs-engagés', 301);
Route::redirect('/nos-engagements-qualite', '/la-marque/production-tracable', 301);
Route::get('/eleveurs-engagés', [BrandController::class, 'engage'])->name('engage');
Route::get('/production-tracable', [BrandController::class, 'tracable'])->name('tracable');
Route::view('/volailles-francaises', 'front.brand.poultry-page.poultry')->name('poultry');
Route::prefix('/actualites')
->name('news.')
->group(function () {
Route::get('/renderActu/{publishedActu}', [ActuController::class, 'renderActu'])->name('renderActu');
Route::get('/{publishedActu}', [ActuController::class, 'view'])->name('show');
Route::get('/', [ActuController::class, 'index'])->name('index');
});
});
Route::prefix('/oui-cest-bon')
->name('ocb.')
->group(function () {
Route::get('/eleveurs/{breeder}', [OCBController::class, 'breeder'])->name('breeders');
Route::get('/temoignages-eleveurs', [OCBController::class, 'testimonials'])->name('testimonials');
Route::get('/volaille', [OCBController::class, 'poultry'])->name('poultry');
Route::get('/volaille', [OCBController::class, 'poultry'])->name('poultry');
Route::get('/oeuf', [OCBController::class, 'egg'])->name('egg');
Route::view('/', 'front.ocb.index')->name('index');
});
Route::get('/map/breeders', [MapController::class, 'breeders'])->name('map.breeders');
Route::get('/en-ce-moment/{moment}', [MomentsController::class, 'index'])->name('moment');
Route::get('/nous-rejoindre', [HomeController::class, 'joinUs'])->name('joinus');
Route::view('/frame/{type}', 'front.frame')->name('front.frame');
Route::prefix('/on-s-engage')
->name('onsengage.')
->group(function () {
Route::prefix('/le-gaulois-marque-engagee-et-responsable')
->name('marqueengage.')
->group(function () {
// Onglet 100% Française
Route::get(
'/la-grande-marque-alimentaire-francaise',
[EngagementsController::class, 'lagrandemarque']
)->name('lagrandemarque');
// Onglet Bien nourrir
Route::get(
'/bien-nourrir-tous-les-francais',
[EngagementsController::class, 'biennourrir']
)->name('biennourrir');
// Onglet Elever durablement
Route::get(
'/elever-durablement',
[EngagementsController::class, 'eleverdurablement']
)->name('eleverdurablement');
// Onglet Restecpter la terre ^^
Route::get(
'/respecter-la-terre',
[EngagementsController::class, 'respecterlaterre']
)->name('respecterlaterre');
// Onglet Mieux vivre ensemble
Route::get(
'/favoriser-le-mieux-vivre-ensemble',
[EngagementsController::class, 'vivreensemble']
)->name('vivreensemble');
});
});
Route::prefix(Str::slug(GeneralConfig::where('type', GeneralConfigType::breedingPage())
->first()->data['breeding_header_title']['value']))
->name('breeding-page.')
->group(function () {
Route::get('/', [BreedingPageController::class, 'index'])->name('index');
Route::get('/{breeding_page_type}', [BreedingPageController::class, 'list'])->name('list');
Route::get('/{breeding_page_type}/{publishedBreedingPage}', [BreedingPageController::class, 'show'])->name('show');
});
// Unsubscribe from newsletter
Route::get('/{unsubscribe}', [CustomerController::class, 'unscribeNewsletter'])
->where('unsubscribe', 'unsubscribe|unsubscribe.php|unsubscribe.html|newsletter')
->name('unsubscribeNewsletter');
// Route ajax pour Single Optin
Route::post('/optin', [HomeController::class, 'addOptIn'])->name('add-single-optin');
Route::middleware('guest:customer')->group(function () {
Route::get('/connexion', [AuthController::class, 'authenticate'])->name('form-connexion');
Route::post('/connexion', [AuthController::class, 'authenticateSubmit'])->name('connexion');
Route::get('/inscription', [AuthController::class, 'register'])->name('form-inscription');
Route::post('/inscription', [AuthController::class, 'registerSubmit'])->name('inscription');
Route::get('/activer/{hashcode}', [AuthController::class, 'activate'])->name('activer');
Route::get('/reinitialiser-mot-de-passe/{token}', [AuthController::class, 'viewChangePassword'])
->name('form-change-mdp');
Route::post('/reinitialiser-mot-de-passe', [AuthController::class, 'passwordReset'])->name('reinit-mdp');
Route::post('/reinitialiser-mot-de-passe/{token}', [AuthController::class, 'changePassword'])
->name('change-mdp');
});
Route::get('/deconnexion', [AuthController::class, 'logout'])
->middleware('auth:customer')->name('deconnexion');
Route::get('/contactez-nous', [ContactController::class, 'contact'])->name('contact-us');
Route::get('/reclamation-produit', [ContactController::class, 'complain'])->name('product-request');
Route::post('/contactez-nous', [ContactController::class, 'contactSubmit'])->name('contact-us.submit');
Route::post('/reclamation-produit', [ContactController::class, 'complainSubmit'])->name('product-request.submit');
Route::prefix('/le-club-des-gaulois')
->name('club.')
->group(function () {
Route::get('/les-infos-du-club/{articleTag}/{publishedArticle}', [ClubController::class, 'article'])
->name('infos.child');
Route::post('/les-infos-du-club/repondre-sondage', [ClubController::class, 'answerSurvey'])
->name('infos.answer-survey');
Route::prefix('/la-bourse-aux-echanges')
->name('bourse.')
->middleware('auth:customer')
->group(function () {
Route::get('/', [BourseController::class, 'bourse'])->name('index');
Route::post('/save-state/{type}', [BourseController::class, 'bourseSaveState'])->name('saveState');
Route::post('/search/{type}', [BourseController::class, 'bourseSearch'])->name('search');
});
Route::get('/les-promos', [ClubController::class, 'reductions'])->name('reductions')
->middleware('auth:customer');
Route::post('/les-promos/get', [ClubController::class, 'reductionsGet'])->name('reductionsGet')
->middleware('auth:customer');
Route::prefix('/la-boutique')
->middleware('auth:customer') // Il faut être connecté pour acceder à la boutique
->name('boutique.')
->group(function () {
Route::get('/', [BoutiqueController::class, 'index'])->name('index');
Route::post('/validation', [BoutiqueController::class, 'validateBuy'])->name('validate');
Route::prefix('commande')
->group(function () {
Route::get('{order}/valide', [BoutiqueController::class, 'validatedBuy'])->name('validated');
Route::get('{order}/reglement', [BoutiqueController::class, 'payWithCb'])->name('payementCB');
});
Route::prefix('/reglement')
->name('reglement.')
->group(function () {
Route::post('/{order}/confirmServ', [BoutiqueController::class, 'confirmCbFromMercanet'])
->name('payementConfirmCBServ')->withoutMiddleware([
'auth:customer',
Authenticate::class,
AddQueuedCookiesToResponse::class,
EncryptCookies::class,
VerifyCsrfToken::class,
StartSession::class,
ShareErrorsFromSession::class,
XssSanitizer::class,
]);
Route::post('/{order}/confirm', [BoutiqueController::class, 'confirmCb'])
->name('payementConfirmCB')->withoutMiddleware([
'auth:customer',
Authenticate::class,
AddQueuedCookiesToResponse::class,
EncryptCookies::class,
VerifyCsrfToken::class,
StartSession::class,
ShareErrorsFromSession::class,
XssSanitizer::class,
]);
});
});
Route::get('/les-infos-du-club/{articleTag}', [ClubController::class, 'index'])->name('indexByCategory');
Route::get('/', [ClubController::class, 'index'])->name('index');
});
Route::prefix('/mon-compte')
->name('account.')
->middleware('auth:customer')
->group(function () {
Route::get('/liste-de-courses', [ClubController::class, 'cart'])->name('cart');
Route::get('/mes-informations', [ClubController::class, 'infos'])->name('infos');
Route::get('/messages', [ClubController::class, 'messages'])->name('messages');
Route::get('/messages/report', [ContactController::class, 'reportCustomer'])->name('reportCustomer');
Route::get('/notifications', [ClubController::class, 'notifications'])->name('notifications');
Route::get('/recettes-favorites', [ClubController::class, 'favoritesRecipes'])->name('favs-recipes');
Route::post('/liste-de-courses/{product}/{status}', [CustomerController::class, 'setItemInCart'])->name('set-cart');
Route::post('/mes-informations', [ClubController::class, 'updateInfos'])->name('update-infos');
Route::post('/mes-informations/change-password', [CustomerController::class, 'changePasswordWhenAuthenticated'])
->name('change-password');
Route::post('/messages/block/{status}', [ClubController::class, 'blockCustomer'])->name('blockCustomer');
Route::post('/messages/delete', [ClubController::class, 'deleteMessage'])->name('deleteMessage');
Route::post('/messages/send', [ClubController::class, 'sendMessage'])->name('sendMessage');
Route::post('/recettes-favorites/{recipe}/set-status/{status}', [CustomerController::class, 'setFavoriteRecipe'])
->name('set-favs-recipes');
Route::redirect('/', '/mon-compte/mes-informations');
});