ldc-legaulois/routes/web-bo.php
2024-07-16 18:19:28 +02:00

357 lines
17 KiB
PHP

<?php
use App\Http\Controllers\Bo\ActivityLogController;
use App\Http\Controllers\Bo\ApproachController;
use App\Http\Controllers\Bo\DemarcheSlideController;
use App\Http\Controllers\Bo\BrandAdvantageController;
use App\Http\Controllers\Bo\ClaimController;
use App\Http\Controllers\Bo\ConsumptionMomentController;
use App\Http\Controllers\Bo\DashboardController;
use App\Http\Controllers\Bo\GeneralSettingController;
use App\Http\Controllers\Bo\HistoricalMilestoneController;
use App\Http\Controllers\Bo\KeyNumberController;
use App\Http\Controllers\Bo\MainSlideController;
use App\Http\Controllers\Bo\MenuNodeDataController;
use App\Http\Controllers\Bo\MeatController;
use App\Http\Controllers\Bo\OfferController;
use App\Http\Controllers\Bo\ProductController;
use App\Http\Controllers\Bo\ProductTypeController;
use App\Http\Controllers\Bo\ProfessionController;
use App\Http\Controllers\Bo\RangeController;
use App\Http\Controllers\Bo\RecipeController;
use App\Http\Controllers\Bo\StaticPageController;
use App\Http\Controllers\Bo\SubmeatController;
use App\Http\Controllers\Bo\SubrangeController;
use App\Http\Controllers\Bo\UserController;
use App\Http\Controllers\Bo\VideoController;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route;
Route::middleware(['throttle:web'])->prefix('bo')->name('bo.')->group(function () {
// * Authenticable routes
Route::namespace('\App\Http\Controllers\Bo')
->group(function () {
Auth::routes(
[
'confirm' => false,
'login' => true,
'logout' => true,
'register' => false,
'reset' => false,
'verify' => false,
]
);
});
Route::middleware('auth:backend')->group(function () {
Route::get('/', [DashboardController::class, 'index'])->name('dashboard');
// * USERS.
Route::resource('users', UserController::class);
Route::patch('/users/{user}/change-published', [
UserController::class, 'changePublished'
])->name('users.change-published');
Route::get('/users/{user}/duplicate', [
UserController::class, 'duplicate'
])->name('users.duplicate');
// * GENERAL SETTINGS
Route::resource('general_settings', GeneralSettingController::class)
->names([
'index' => 'general_settings.index',
'edit' => 'general_settings.edit',
'update' => 'general_settings.update',
])->only(['edit', 'update'])
->withoutMiddleware('htmlsanitize')
->middleware('htmlsanitize:text,recipes_text');
// * STATIC PAGES
Route::resource('pages', StaticPageController::class)
->names([
'index' => 'static_pages.index',
'edit' => 'static_pages.edit',
'update' => 'static_pages.update',
])->parameters(['pages' => 'static_page'])
->only(['edit', 'update'])
->withoutMiddleware('htmlsanitize')
->middleware('htmlsanitize:content,data');
// * MENU NODE DATA
Route::resource('menu_node_data', MenuNodeDataController::class)
// * Nasty hack to prevent unwanted modifications form singular lib
->parameter('menu_node_data', 'menu_node_data')
->only(['index', 'update']);
// * PROFESSIONS.
Route::resource('professions', ProfessionController::class);
Route::patch('/professions/{profession}/change-published', [
ProfessionController::class, 'changePublished'
])->name('professions.change-published');
Route::get('/professions/{profession}/duplicate', [
ProfessionController::class, 'duplicate'
])->name('professions.duplicate');
// * KEYNUMBERS.
Route::resource('key_numbers', KeyNumberController::class);
Route::patch('/key_numbers/{key_number}/change-published', [
KeyNumberController::class, 'changePublished'
])->name('key_numbers.change-published');
Route::patch('/key_numbers/{key_number}/change-order/{direction}', [
KeyNumberController::class, 'changeOrder'
])->where('direction', 'up|down')->name('key_numbers.change-order');
Route::get('/key_numbers/{key_number}/duplicate', [
KeyNumberController::class, 'duplicate'
])->name('key_numbers.duplicate');
// * BRAND_ADVANTAGES.
Route::resource('brand_advantages', BrandAdvantageController::class);
Route::patch('/brand_advantages/{brand_advantage}/change-order/{direction}', [
BrandAdvantageController::class, 'changeOrder'
])->where('direction', 'up|down')->name('brand_advantages.change-order');
Route::patch('/brand_advantages/{brand_advantage}/change-published', [
BrandAdvantageController::class, 'changePublished'
])->name('brand_advantages.change-published');
Route::get('/brand_advantages/{brand_advantage}/duplicate', [
BrandAdvantageController::class, 'duplicate'
])->name('brand_advantages.duplicate');
// * DEMARCHE_SLIDES.
Route::resource('demarche_slides', DemarcheSlideController::class)
->withoutMiddleware('htmlsanitize')
->middleware('htmlsanitize:text');
Route::patch('/demarche_slides/{demarche_slide}/change-order/{direction}', [
DemarcheSlideController::class, 'changeOrder'
])->where('direction', 'up|down')->name('demarche_slides.change-order');
Route::patch('/demarche_slides/{demarche_slide}/change-published', [
DemarcheSlideController::class, 'changePublished'
])->name('demarche_slides.change-published');
Route::get('/demarche_slides/{demarche_slide}/duplicate', [
DemarcheSlideController::class, 'duplicate'
])->name('demarche_slides.duplicate');
// * MAIN_SLIDES.
Route::resource('main_slides', MainSlideController::class)
->withoutMiddleware('htmlsanitize')
->middleware('htmlsanitize:text');
Route::patch('/main_slides/{main_slide}/change-order/{direction}', [
MainSlideController::class, 'changeOrder'
])->where('direction', 'up|down')->name('main_slides.change-order');
Route::patch('/main_slides/{main_slide}/change-published', [
MainSlideController::class, 'changePublished'
])->name('main_slides.change-published');
Route::get('/main_slides/{main_slide}/duplicate', [
MainSlideController::class, 'duplicate'
])->name('main_slides.duplicate');
// * RANGES.
Route::resource('ranges', RangeController::class)
->withoutMiddleware('htmlsanitize')
->middleware('htmlsanitize:description');
Route::patch('/ranges/{range}/change-order/{direction}', [
RangeController::class, 'changeOrder'
])->where('direction', 'up|down')->name('ranges.change-order');
Route::patch('/ranges/{range}/change-published', [
RangeController::class, 'changePublished'
])->name('ranges.change-published');
Route::get('/ranges/{range}/duplicate', [
RangeController::class, 'duplicate'
])->name('ranges.duplicate');
// Change order of ranges.
Route::get('/ranges/{range}/change-subranges-order', [
RangeController::class, 'editSubrangesOrder'
])->name('ranges.edit-subranges-order');
Route::patch('/ranges/{range}/update-subranges-order', [
RangeController::class, 'updateSubrangesOrder'
])->name('ranges.update-subranges-order');
Route::get('/ranges/json/paginate', [RangeController::class, 'jsonPaginateModels'])
->name('ranges.json-paginate');
// * SUBRANGES.
Route::resource('subranges', SubrangeController::class)
->withoutMiddleware('htmlsanitize')
->middleware('htmlsanitize:description');
Route::patch('/subranges/{subrange}/change-published', [
SubrangeController::class, 'changePublished'
])->name('subranges.change-published');
Route::get('/subranges/{subrange}/duplicate', [
SubrangeController::class, 'duplicate'
])->name('subranges.duplicate');
Route::get('/subranges/json/paginate', [SubrangeController::class, 'jsonPaginateModels'])
->name('subranges.json-paginate');
// * MEATS.
Route::resource('meats', MeatController::class)
->withoutMiddleware('htmlsanitize')
->middleware('htmlsanitize:description');
Route::patch('/meats/{meat}/change-order/{direction}', [
MeatController::class, 'changeOrder'
])->where('direction', 'up|down')->name('meats.change-order');
Route::patch('/meats/{meat}/change-published', [
MeatController::class, 'changePublished'
])->name('meats.change-published');
Route::get('/meats/{meat}/duplicate', [
MeatController::class, 'duplicate'
])->name('meats.duplicate');
// Change order of submodels.
Route::get('/meats/{meat}/change-submeats-order', [
MeatController::class, 'editSubmeatsOrder'
])->name('meats.edit-submeats-order');
Route::patch('/meats/{meat}/update-submeats-order', [
MeatController::class, 'updateSubmeatsOrder'
])->name('meats.update-submeats-order');
Route::get('/meats/json/paginate', [MeatController::class, 'jsonPaginateModels'])
->name('meats.json-paginate');
// * SUBMEATS.
Route::resource('submeats', SubmeatController::class)
->withoutMiddleware('htmlsanitize')
->middleware('htmlsanitize:description');
Route::patch('/submeats/{submeat}/change-published', [
SubmeatController::class, 'changePublished'
])->name('submeats.change-published');
Route::get('/submeats/{submeat}/duplicate', [
SubmeatController::class, 'duplicate'
])->name('submeats.duplicate');
Route::get('/submeats/json/paginate', [SubmeatController::class, 'jsonPaginateModels'])
->name('submeats.json-paginate');
// * PRODUCT TYPES.
Route::resource('product_types', ProductTypeController::class)
->withoutMiddleware('htmlsanitize')
->middleware('htmlsanitize:description');
Route::patch('/product_types/{product_type}/change-published', [
ProductTypeController::class, 'changePublished'
])->name('product_types.change-published');
Route::patch('/product_types/{product_type}/change-button-status', [
ProductTypeController::class, 'changeButtonStatus'
])->name('product_types.change-button-status');
Route::get('/product_types/{product_type}/duplicate', [
ProductTypeController::class, 'duplicate'
])->name('product_types.duplicate');
Route::get('/product-types/json/paginate', [ProductTypeController::class, 'jsonPaginateModels'])
->name('product_types.json-paginate');
// * CLAIMS.
Route::resource('claims', ClaimController::class);
Route::patch('/claims/{claim}/change-published', [
ClaimController::class, 'changePublished'
])->name('claims.change-published');
Route::get('/claims/{claim}/duplicate', [
ClaimController::class, 'duplicate'
])->name('claims.duplicate');
Route::get('/claims/json/paginate', [ClaimController::class, 'jsonPaginateModels'])
->name('claims.json-paginate');
// * APPROACHES.
Route::get('/approaches/{approach_type}', [
ApproachController::class, 'index'
])->name('approaches.index');
Route::get('/approaches/{approach_type}/create', [
ApproachController::class, 'create'
])->name('approaches.create');
Route::post('/approaches/{approach_type}/store', [
ApproachController::class, 'store'
])->name('approaches.store');
Route::get('/approaches/{approach}/show', [
ApproachController::class, 'show'
])->name('approaches.show');
Route::resource('approaches', ApproachController::class)->only(['edit', 'update', 'destroy']);
Route::patch('/approaches/{approach}/change-order/{direction}', [
ApproachController::class, 'changeOrder'
])->where('direction', 'up|down')->name('approaches.change-order');
Route::patch('/approaches/{approach}/change-published', [
ApproachController::class, 'changePublished'
])->name('approaches.change-published');
Route::get('/approaches/{approach}/duplicate', [
ApproachController::class, 'duplicate'
])->name('approaches.duplicate');
Route::get('/approaches/json/paginate', [ApproachController::class, 'jsonPaginateDemarches'])
->name('approaches.json-paginate');
// * CONSUMPTION MOMENT.
Route::resource('consumption_moments', ConsumptionMomentController::class);
Route::get('/consumption_moments/{consumption_moment}/duplicate', [
ConsumptionMomentController::class, 'duplicate'
])->name('consumption_moments.duplicate');
// * VIDEOS.
Route::resource('videos', VideoController::class);
Route::patch('/videos/{video}/change-published', [
VideoController::class, 'changePublished'
])->name('videos.change-published');
Route::patch('/videos/{video}/change-homepage', [
VideoController::class, 'changeHomepage'
])->name('videos.change-homepage');
Route::patch('/videos/{video}/change-order/{direction}', [
VideoController::class, 'changeOrder'
])->where('direction', 'up|down')->name('videos.change-order');
Route::get('/videos/{video}/duplicate', [
VideoController::class, 'duplicate'
])->name('videos.duplicate');
Route::get('/videos/json/paginate', [VideoController::class, 'jsonPaginateModels'])
->name('videos.json-paginate');
// * RECIPES.
Route::resource('recipes', RecipeController::class)
->withoutMiddleware('htmlsanitize')
->middleware('htmlsanitize:preparation,advice');
Route::get('/recipes/{recipe}/duplicate', [
RecipeController::class, 'duplicate'
])->name('recipes.duplicate');
Route::patch('/recipes/{recipe}/change-published', [
RecipeController::class, 'changePublished'
])->name('recipes.change-published');
Route::patch('/recipes/{recipe}/change-highlight', [
RecipeController::class, 'changeHighlight'
])->name('recipes.change-highlight');
Route::get('/recipes/json/paginate', [ConsumptionMomentController::class, 'jsonPaginateModels'])
->name('recipes.json-paginate');
Route::get('/videos/json/paginate', [VideoController::class, 'jsonPaginateModels'])
->name('videos.json-paginate');
// * PRODUCTS.
Route::resource('products', ProductController::class)
->withoutMiddleware('htmlsanitize')
->middleware('htmlsanitize:description,details,preparation,ingredients');
Route::get('/products/{product}/duplicate', [
ProductController::class, 'duplicate'
])->name('products.duplicate');
Route::patch('/products/{product}/change-published', [
ProductController::class, 'changePublished'
])->name('products.change-published');
Route::get('/products/json/paginate', [ProductController::class, 'jsonPaginateModels'])
->name('products.json-paginate');
// * OFFERS.
Route::resource('offers', OfferController::class);
Route::patch('/offers/{offer}/change-published', [
OfferController::class, 'changePublished'
])->name('offers.change-published');
Route::patch('/offers/{offer}/change-order/{direction}', [
OfferController::class, 'changeOrder'
])->where('direction', 'up|down')->name('offers.change-order');
Route::get('/offers/{offer}/duplicate', [
OfferController::class, 'duplicate'
])->name('offers.duplicate');
// * HISTORICAL MILESTONES.
Route::resource('historical_milestones', HistoricalMilestoneController::class)
->withoutMiddleware('htmlsanitize')
->middleware('htmlsanitize:description');
Route::get('/historical_milestones/{historical_milestone}/duplicate', [
HistoricalMilestoneController::class, 'duplicate'
])->name('historical_milestones.duplicate');
Route::patch('/historical_milestones/{historical_milestone}/change-published', [
HistoricalMilestoneController::class, 'changePublished'
])->name('historical_milestones.change-published');
Route::middleware('can:isConceptor')->group(function () {
// * ACTIVITY LOGS.
Route::resource('activity_logs', ActivityLogController::class)->only(['index', 'show']);
Route::get('/activity_logs/user/{user:id}', [ActivityLogController::class, 'index'])
->name('activity_logs.user');
});
});
// * Others routes
Route::post('theme/set', [Controller::class, 'setTheme'])->name('theme.set');
});