<?php
use Illuminate\Support\Facades\Route;

use Illuminate\Auth\Middleware\Authenticate;
use Illuminate\Auth\Middleware\Permission;

use App\Http\Controllers\LoginController;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\ProjectController;
use App\Http\Controllers\Project\Site\PageController;
use App\Http\Controllers\MessagesController;
use App\Http\Controllers\Project\Setting\PlanController;
use App\Http\Controllers\Project\Setting\ExtraController;
use App\Http\Controllers\Project\Setting\LinkController;
use App\Http\Controllers\Project\Setting\PromotionCodeController;
use App\Http\Controllers\Project\Setting\LogoController;
use App\Http\Controllers\Project\Setting\InformationController;
use App\Http\Controllers\Project\Setting\CancelationController;
use App\Http\Controllers\Project\Setting\EditionController;
use App\Http\Controllers\MediaController;
// use App\Http\Controllers\BillingModelController;
use App\Http\Controllers\BillingController;
use App\Http\Controllers\UserController;
use App\Http\Controllers\SettingController;
use App\Http\Controllers\CommunicationController;
use App\Http\Controllers\CommunicationCleaningController;
use App\Http\Controllers\ProspectionController;
use App\Http\Controllers\InfoController;
use App\Http\Controllers\MonitoringController;
use App\Http\Controllers\TaskController;
use App\Http\Controllers\AdvertController;
use App\Http\Controllers\Partner\PartnerController;
use App\Http\Controllers\Partner\PartnerGroupController;
use App\Http\Controllers\Partner\PartnerManagerController;
use App\Http\Controllers\Partner\PartnerProjectController;
use App\Http\Controllers\Partner\PartnerLogoController;
use App\Http\Controllers\Partner\PartnerPlanController;
use App\Http\Controllers\RedirectionController;
use App\Http\Controllers\FeedbackController;

/*
|--------------------------------------------------------------------------
| 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!
|
*/

//Login/register
Route::get('/login', [LoginController::class, 'index'])->name('login'); // login page
Route::get('/logout', [LoginController::class, 'logout'])->name('logout');// logout page
Route::post('/authenticate', [LoginController::class, 'authenticate']);

//User routes 
Route::middleware(['auth', 'perm'])->group(function () {

	// PDF Preview (avis de valeur) — régénère le HTML à chaque refresh
	// Servir le HTML exact tel que Clusteer le reçoit (avec base href file://)
	Route::get('/pdf-debug', function () {
		$path = "_clusteer_debug.html";
		if (!\Illuminate\Support\Facades\Storage::disk('private')->exists($path)) {
			abort(404, 'Debug HTML not found — generate a PDF first');
		}
		$html = \Illuminate\Support\Facades\Storage::disk('private')->get($path);
		// Remplacer le base href file:// par une URL HTTP pour que ça fonctionne dans le navigateur
		$base = rtrim(url('/'), '/');
		$html = preg_replace('/<base href="file:\/\/[^"]*">/', '<base href="' . $base . '/">', $html);
		return response($html)->header('Content-Type', 'text/html; charset=UTF-8');
	});

	Route::get('/pdf-preview/parcelle/{cadastreId}', function ($cadastreId) {
		// Support multi-parcelle : 66227000AK0315 ou 66227000AK0315,66227000AK0316
		$parcelsIds = array_map('trim', explode(',', $cadastreId));
		if (empty($parcelsIds)) abort(404, 'Aucune parcelle spécifiée');

		// Mode PDF : merged (défaut) | comparative | separate (nécessite >= 2 parcelles)
		$pdfMode = request()->query('pdf_mode', 'merged');
		if (!in_array($pdfMode, ['merged', 'comparative', 'separate'])) {
			$pdfMode = 'merged';
		}
		if ($pdfMode === 'separate' && count($parcelsIds) < 2) {
			$pdfMode = 'merged';
		}

		$statsScope = request()->query('stats_scope', 'sale');
        if (!in_array($statsScope, ['sale', 'rent', 'both'])) {
            $statsScope = 'sale';
        }

		// Charger un user Super-admin (fallback Administrateur)
		// On utilise App\Models\User car le pivot model_has_roles stocke ce model_type
		$user = \App\Models\User::whereHas('roles', function($q){
			$q->where('name', 'Super-admin');
		})->first()
		?: \App\Models\User::whereHas('roles', function($q){
			$q->where('name', 'Administrateur');
		})->first();
		if (!$user) abort(404, 'Aucun utilisateur admin trouvé');

		// Choisir le site type=2 du projet où le user a le plus de settings
		// (sinon le premier site type=2 trouvé)
		$topProjectId = $user->setting_list
			->groupBy('project_id')
			->map->count()
			->sortDesc()
			->keys()
			->first();
		$site = null;
		if ($topProjectId) {
			$site = \Rootsud\Core\Models\Project_site::where('type', 2)
				->where('project_id', $topProjectId)
				->first();
		}
		if (!$site) $site = \Rootsud\Core\Models\Project_site::where('type', 2)->first();
		if (!$site) abort(404, 'Site non trouvé');

		$request = new \Illuminate\Http\Request(['p' => base64_encode(implode(',', $parcelsIds))]);

		// Construire le thème depuis les settings user (même logique que ActionController::buildTheme)
		$accessEstimCustom = true;
		$p = $site->project;

		// Unified map type (backward compat: derive from style_map_satellite)
		$mapType = $user->hasSetting($p, 'style_map_type', null);
		if ($mapType === null) {
			$mapType = ($user->hasSetting($p, 'style_map_satellite', '0') === '1') ? 'satellite' : 'standard';
		}

		$theme = [
			'styleBanner' => $user->hasSetting($p, 'style_banner', 'gradient-background-angular'),
			'styleBannerFooter' => $user->hasSetting($p, 'style_banner_footer', $user->hasSetting($p, 'style_banner', 'gradient-background-angular')),
			'styleBannerHeader' => $user->hasSetting($p, 'style_banner_header', $user->hasSetting($p, 'style_banner', 'gradient-background-angular')),
			'styleBannerFooterFlip' => $user->hasSetting($p, 'style_banner_footer_flip', 'none'),
			'styleBannerFooterScale' => $user->hasSetting($p, 'style_banner_footer_scale', '1'),
			'styleBannerHeaderFlip' => $user->hasSetting($p, 'style_banner_header_flip', 'none'),
			'styleBannerHeaderScale' => $user->hasSetting($p, 'style_banner_header_scale', '1'),
			'colorPrimary' => \Rootsud\City\Exports\PdfParcelsAvis::hexToRgba($user->hasSetting($p, 'style_color_primary', '#0c193d')),
			'colorSecondary' => \Rootsud\City\Exports\PdfParcelsAvis::hexToRgba($user->hasSetting($p, 'style_color_secondary', '#3f6ad8')),
			'textColorPrimary' => $user->hasSetting($p, 'style_text_color_primary', 'rgba(255,255,255,1)'),
			'angleGradient' => 90,
			// --- Cover settings ---
			'coverType' => $user->hasSetting($p, 'style_cover_type', '3d'),
			'coverPhotoPriority' => $user->hasSetting($p, 'style_cover_photo_priority', '1') === '1',
			'coverShowNeighbors' => $user->hasSetting($p, 'style_cover_show_neighbors', '1') === '1',
			'coverShowMeasurements' => $user->hasSetting($p, 'style_cover_show_measurements', '0') === '1',
			'coverShowArea' => $user->hasSetting($p, 'style_cover_show_area', '0') === '1',
			'coverShowParcelNumber' => $user->hasSetting($p, 'style_cover_show_parcel_number', '0') === '1',
			'coverShowScaleBar' => $user->hasSetting($p, 'style_cover_show_scale_bar', '0') === '1',
			'coverCadastre' => $user->hasSetting($p, 'style_cover_cadastre', '0') === '1',
			'coverParcelOutline' => $user->hasSetting($p, 'style_cover_parcel_outline', '0') === '1',
			'coverCircle' => $user->hasSetting($p, 'style_cover_circle', '0') === '1',
			'coverScale' => $user->hasSetting($p, 'style_cover_scale', '0') === '1',
			'coverOrientation' => $user->hasSetting($p, 'style_cover_orientation', '0') === '1',
			// --- Map settings (unified type) ---
			'mapType' => $mapType,
			'mapSatellite' => $mapType === 'satellite',
			'mapCadastre' => $user->hasSetting($p, 'style_map_cadastre', '0') === '1',
			'mapParcelOutline' => $user->hasSetting($p, 'style_map_parcel_outline', '0') === '1',
			'mapCircle' => $user->hasSetting($p, 'style_map_circle', '0') === '1',
			'mapScale' => $user->hasSetting($p, 'style_map_scale', '0') === '1',
			'mapOrientation' => $user->hasSetting($p, 'style_map_orientation', '0') === '1',
			'mapShowNeighbors' => $user->hasSetting($p, 'style_map_show_neighbors', '1') === '1',
			'mapShowMeasurements' => $user->hasSetting($p, 'style_map_show_measurements', '0') === '1',
			'mapShowArea' => $user->hasSetting($p, 'style_map_show_area', '0') === '1',
			'mapShowParcelNumber' => $user->hasSetting($p, 'style_map_show_parcel_number', '0') === '1',
			'mapShowScaleBar' => $user->hasSetting($p, 'style_map_show_scale_bar', '0') === '1',
		];

		// Charger les données utilisateur (batiType, surface modifiée, etc.)
		$encodedId = \Rootsud\City\Models\France\Fr_parcel_multiple::encodeCadastreId($parcelsIds, true);
		$helper = new class($user, $site) {
			use \Rootsud\City\Http\Traits\HasMultiParcel;
			use \Rootsud\City\User\Http\Traits\HasParcelUserDetail;
			private $_u; public $site;
			public function __construct($u, $s) { $this->_u = $u; $this->site = $s; }
			public function user() { return $this->_u; }
		};
		$parcels = $helper->loadParcelsByIds($parcelsIds);
		$parcelReference = $parcels->first();
		if (!$parcelReference) abort(404, 'Parcelle non trouvée');

		$parcelInfoUserDetails = $helper->getParcelInfoUserDetails($user->id, $parcelReference, $encodedId);

		$job = new \Rootsud\City\Exports\PdfParcelsSheet(
			$request, $user->id, $site->id, $parcelsIds, '',
			$accessEstimCustom, $theme, null, $parcelInfoUserDetails, $pdfMode,$statsScope
		);

		// Mode séparé → generateHtmlSeparate() (page par parcelle)
		// Modes merged/comparative → generateHtml() (le Job lit $this->pdfMode en interne
		// pour insérer la page_comparative supplémentaire si mode = comparative)
		$html = $pdfMode === 'separate'
			? $job->generateHtmlSeparate()
			: $job->generateHtml();
		if (!$html) abort(500, 'Erreur lors de la génération du HTML');

		// Remplacer les chemins relatifs par des URLs absolues
		$base = rtrim(url('/'), '/');
		$html = preg_replace('/(src|href)="(core\/|core-city\/|fonts\/)/', '$1="' . $base . '/$2', $html);
		$html = preg_replace('/url\("(fonts\/)/', 'url("' . $base . '/$1', $html);

		// Injecter les variables globales attendues par les scripts
		$html = str_replace('<body>', '<body><script>var APP_URL="' . $base . '",USER_ID=0,SHOW_EXCEEDING=0,SHOW_PLAN=0,SHOW_CHANGE_MEAN=0,GUIDED_TOURS={};</script>', $html);

		return response($html)->header('Content-Type', 'text/html; charset=UTF-8');
	});

	Route::get('/pdf-preview/avis/{leadId}', function ($leadId) {
		$lead = \Rootsud\City\User\Models\Lead::findOrFail($leadId);

		// Trouver la dernière estimation liée à ce lead via la relation inverse (Estimation.lead_id).
		// On évite $lead->estimation() qui est un belongsTo sur lead.estimation_id et peut pointer vers une estimation orpheline.
		$estimation = \Rootsud\City\User\Models\Estimation::where('lead_id', $lead->id)
			->where('user_id', $lead->user_id)
			->latest()
			->first();
		if (!$estimation) abort(404, 'Aucune estimation trouvée pour ce lead');

		// Charger le user propriétaire et son site
		$user = \Rootsud\Core\Models\User::findOrFail($lead->user_id);
		$site = \Rootsud\Core\Models\Project_site::where('project_id', $lead->project_id ?? 1)->where('type', 2)->first();
		if (!$site) abort(404, 'Site non trouvé');

		// Reconstruire les données minimales pour PdfParcelsAvis
		$parcelsIds = $estimation->multiparcel_id
			? explode(',', \Rootsud\City\Models\France\Fr_parcel_multiple::decodeCadastreId($estimation->multiparcel_id))
			: [];
		if (empty($parcelsIds)) abort(404, 'Aucune parcelle liée');

		$request = new \Illuminate\Http\Request([
			'link_type' => 'lead',
			'link_id' => $leadId,
			'hash' => $estimation->hash,
		]);

		// Construire le thème depuis les settings user
		$accessEstimCustom = true;
		$theme = [
			'styleBanner' => $user->hasSetting($site->project_id, 'style_banner', 'gradient-background-angular'),
			'styleBannerFooter' => $user->hasSetting($site->project_id, 'style_banner_footer', $user->hasSetting($site->project_id, 'style_banner', 'gradient-background-angular')),
			'styleBannerHeader' => $user->hasSetting($site->project_id, 'style_banner_header', $user->hasSetting($site->project_id, 'style_banner', 'gradient-background-angular')),
			'styleBannerFooterFlip' => $user->hasSetting($site->project_id, 'style_banner_footer_flip', 'none'),
			'styleBannerFooterScale' => $user->hasSetting($site->project_id, 'style_banner_footer_scale', '1'),
			'styleBannerHeaderFlip' => $user->hasSetting($site->project_id, 'style_banner_header_flip', 'none'),
			'styleBannerHeaderScale' => $user->hasSetting($site->project_id, 'style_banner_header_scale', '1'),
			'colorPrimary' => \Rootsud\City\Exports\PdfParcelsAvis::hexToRgba($user->hasSetting($site->project_id, 'style_color_primary', '#0c193d')),
			'colorSecondary' => \Rootsud\City\Exports\PdfParcelsAvis::hexToRgba($user->hasSetting($site->project_id, 'style_color_secondary', '#3f6ad8')),
			'textColorPrimary' => $user->hasSetting($site->project_id, 'style_text_color_primary', 'rgba(255,255,255,1)'),
			'angleGradient' => 90,
			'coverType' => $user->hasSetting($site->project_id, 'style_cover_type', '3d'),
			'coverPhotoPriority' => true,
			'mapSatellite' => (bool) $user->hasSetting($site->project_id, 'style_map_satellite', false),
			'mapCadastre' => (bool) $user->hasSetting($site->project_id, 'style_map_cadastre', false),
			'mapParcelOutline' => (bool) $user->hasSetting($site->project_id, 'style_map_parcel_outline', false),
			'mapCircle' => (bool) $user->hasSetting($site->project_id, 'style_map_circle', false),
			'mapScale' => (bool) $user->hasSetting($site->project_id, 'style_map_scale', false),
			'mapOrientation' => (bool) $user->hasSetting($site->project_id, 'style_map_orientation', false),
			'coverShowNeighbors' => true,
			'coverShowMeasurements' => false,
			'coverShowArea' => false,
			'coverShowParcelNumber' => false,
			'coverShowScaleBar' => false,
		];

		$encodedId = \Rootsud\City\Models\France\Fr_parcel_multiple::encodeCadastreId($parcelsIds, true);
		$parcelUserDetails = \Rootsud\City\User\Models\Parcel_user_detail::with(['values'])->where('user_id', $user->id)->where('multiparcel_id', $encodedId)->get();

		// Calculer les comparables DVF + Annonces (comme ActionController)
		$sourceType = \Rootsud\City\Models\France\Fr_price_evolution::SOURCE_TYPE_SALE;
		$_user = $user;
		$_site = $site;
		$helper = new class($_user, $_site) {
			use \Rootsud\City\Http\Traits\HasMultiParcel;
			use \Rootsud\City\User\Http\Traits\HasParcelUserDetail;
			private $_u; public $site;
			public function __construct($u, $s) { $this->_u = $u; $this->site = $s; }
			public function user() { return $this->_u; }
		};

		$parcelInfoUserDetails = [
			'hash' => $estimation->hash,
			'ref' => $estimation->reference ?? null,
			'user_parcel_details' => $parcelUserDetails,
			'user_parcel_details_estimation' => $helper->filteredParcelDetailUser($parcelUserDetails, 'estimation_'),
		];
		$parcels = $helper->loadParcelsByIds($parcelsIds);
		$parcelReference = $parcels->first();
		$batiTypeDetail = $parcelUserDetails->firstWhere('name', 'batiType');
		$batiType = $batiTypeDetail ? (int) $batiTypeDetail->object_id : ($parcelReference->detail->bati_type ?? 0);

		$dvfIds = $helper->getSimilarityDvfIds($parcelReference, $parcels, 10, $batiType);
		$propertieIds = $helper->getSimilarityPropertieIds($parcelReference, $parcels, 10, $batiType, $sourceType);

		$job = new \Rootsud\City\Exports\PdfParcelsAvis(
			$request, $user->id, $site->id, $parcelsIds, '',
			$dvfIds, $propertieIds, $parcelInfoUserDetails,
			$accessEstimCustom, $theme,
			$sourceType,
			[], null, true
		);

		$html = $job->generateHtml();
		if (!$html) abort(500, 'Erreur lors de la génération du HTML');

		// Remplacer les chemins relatifs par des URLs absolues dans les attributs src/href uniquement
		$base = rtrim(url('/'), '/');
		$html = preg_replace('/(src|href)="(core\/|core-city\/|fonts\/)/', '$1="' . $base . '/$2', $html);
		$html = preg_replace('/url\("(fonts\/)/', 'url("' . $base . '/$1', $html);

		// Injecter les variables globales attendues par app-core.js
		$html = str_replace('<body>', '<body><script>var APP_URL="' . $base . '",USER_ID=0,SHOW_EXCEEDING=0,SHOW_PLAN=0,SHOW_CHANGE_MEAN=0,GUIDED_TOURS={};</script>', $html);

		return response($html)->header('Content-Type', 'text/html; charset=UTF-8');
	});

	//Dashboard
	Route::get('/', [DashboardController::class, 'index']);
	Route::prefix('dashboard')->group(function () {
		Route::post('/counter', [DashboardController::class, 'refreshCounter']);
		Route::post('/counter-content', [DashboardController::class, 'refreshCounterContent']);
		Route::post('/chart/newuser', [DashboardController::class, 'chartNewUser']);
		Route::post('/chart/newpayment', [DashboardController::class, 'chartNewPayment']);
		Route::post('/counter/useronline', [DashboardController::class, 'countUserOnline']);
		Route::post('/history/refresh', [DashboardController::class, 'refreshHistory']);
	});

	//Analytics / Statistics
	Route::get('/statistics', [DashboardController::class, 'analytics']);
	Route::prefix('statistics')->group(function () {
		Route::post('/refresh-metrics', [DashboardController::class, 'refreshAnalyticsMetrics']);
		Route::post('/chart/plandistribution', [DashboardController::class, 'chartPlanDistribution']);
		Route::post('/chart/revenuetrend', [DashboardController::class, 'chartRevenueTrend']);
		Route::post('/chart/subscribergrowth', [DashboardController::class, 'chartSubscriberGrowth']);
		Route::post('/chart/metricsevolution', [DashboardController::class, 'chartMetricsEvolution']);
		Route::post('/tunnel', [DashboardController::class, 'tunnel']);
		Route::get('/tunnel/export', [DashboardController::class, 'tunnelExport']);
	});

	//Monitoring
	Route::prefix('monitoring')->group(function () {
		Route::get('/', [MonitoringController::class, 'index']);
		Route::post('/retry/{id}', [MonitoringController::class, 'retryJob']);
		Route::delete('/failed/{id}', [MonitoringController::class, 'deleteFailedJob']);
		Route::post('/failed/clear', [MonitoringController::class, 'clearFailedJobs']);
	});

	Route::prefix('scrap')->group(function () {
		Route::get('partner/chart/{id}/{idProject}', [PartnerController::class, 'chartView'])->name('partner.chart.view');
	});


	//Task
	Route::prefix('task')->group(function () {
		Route::get('/', [TaskController::class, 'index']);
		Route::post('/trait', [TaskController::class, 'trait']);
		Route::post('/trait-parent', [TaskController::class, 'traitParent']);
		Route::post('/trait/info', [TaskController::class, 'info']);
		Route::post('/trait/maj', [TaskController::class, 'maj']);
		Route::get('/trait/modal/{id}', [TaskController::class, 'modal']);
		Route::delete('/trait', [TaskController::class, 'drop']);
	});

	//Project
	Route::prefix('project')->group(function () {
		Route::post('/', [ProjectController::class, 'create']);
		Route::get('/', [ProjectController::class, 'index']);

		Route::post('/{id}', [ProjectController::class, 'edit']);
		Route::get('/{id}', [ProjectController::class, 'card']);
		Route::get('/delete/{id}', [ProjectController::class, 'delete']);

		Route::prefix('maj')->group(function () {
			Route::get('/site/{id}', [ProjectController::class, 'majSite']);
			Route::get('/{id}', [ProjectController::class, 'majSiteAll']);
		});

		Route::prefix('settings')->group(function () {
			Route::get('/{id}', [ProjectController::class, 'settings']);
			Route::post('/status/{id}', [ProjectController::class, 'toggleSettingState']);

			Route::prefix('edition')->group(function () {
				Route::get('/billing/{id}', [EditionController::class, 'billing']);
			});

			Route::prefix('information')->group(function () {
				Route::post('/{id}', [InformationController::class, 'create']);
				Route::post('/{id}/{idInformation}', [InformationController::class, 'edit']);
				Route::delete('/{id}', [InformationController::class, 'delete']);
			});

			Route::prefix('logo')->group(function () {
				Route::post('/{id}', [LogoController::class, 'create']);
				Route::post('/{id}/{idLogo}', [LogoController::class, 'edit']);
				Route::delete('/favicon/{id}', [LogoController::class, 'deleteFavicon']);
				Route::delete('/{id}', [LogoController::class, 'delete']);
			});

			Route::prefix('extra')->group(function () {
				Route::post('/{id}', [ExtraController::class, 'create']);
				Route::post('/{id}/{idExtra}', [ExtraController::class, 'edit']);
				Route::delete('/{id}', [ExtraController::class, 'delete']);
				Route::get('/preview/{id}', [ExtraController::class, 'getPreview']);
			});

			Route::prefix('cancelation')->group(function () {
				Route::post('/{id}', [CancelationController::class, 'create']);
				Route::post('/{id}/{idCancelation}', [CancelationController::class, 'edit']);
				Route::delete('/{id}', [CancelationController::class, 'delete']);
			});

			Route::prefix('link')->group(function () {
				Route::post('/{id}', [LinkController::class, 'create']);
				Route::delete('/{id}', [LinkController::class, 'delete']);
			});

			Route::prefix('promotion-code')->group(function () {
				Route::get('/option/{id}', [PromotionCodeController::class, 'option']);
				Route::post('/option/{id}', [PromotionCodeController::class, 'editOption']);
				Route::post('/plan/{id}', [PromotionCodeController::class, 'plan']);
				Route::post('/state/{id}/{state}', [PromotionCodeController::class, 'state']);
				Route::delete('/{id}', [PromotionCodeController::class, 'delete']);
				Route::post('/{id}', [PromotionCodeController::class, 'create']);
				Route::post('/{id}/{idPromotion}', [PromotionCodeController::class, 'edit']);
			});

			Route::prefix('plan')->group(function () {
				Route::get('/refresh/{idProject}/{id}/{step?}/{edit?}', [PlanController::class, 'refresh']);

				Route::get('/option/{id}', [PlanController::class, 'option']);
				Route::post('/option/{id}', [PlanController::class, 'editOption']);

				Route::get('/degressivitie/{id}', [PlanController::class, 'degressivitie']);
				Route::post('/degressivitie/{id}', [PlanController::class, 'editDegressivitie']);

				Route::delete('/{id}', [PlanController::class, 'archive']);
				Route::post('/create/{id}/{trial?}', [PlanController::class, 'create']);
				Route::post('/edit/{id}/{idPlan}', [PlanController::class, 'edit']);
				Route::post('/{id}/{state}', [PlanController::class, 'state']);
			});

			Route::prefix('trial')->group(function () {
				Route::get('/refresh/{idProject}/{step?}/{edit?}', [PlanController::class, 'refreshTrial']);
			});
		});


		Route::prefix('site')->group(function () {
			Route::post('/settings/guided/{id}', [ProjectController::class, 'createSiteSettingsGuidedChapter']);
			Route::post('/settings/guided/{id}/edit/{chapterId}', [ProjectController::class, 'editSiteSettingsGuidedChapter']);
			Route::post('/settings/guided/{id}/order', [ProjectController::class, 'orderSiteSettingsGuidedChapter']);
			
			Route::get('/settings/guided/{chapterId}', [ProjectController::class, 'getSiteSettingsGuidedItem']);
			Route::post('/settings/guided/{id}/order/{chapterId}', [ProjectController::class, 'orderSiteSettingsGuidedItem']);
			Route::post('/settings/guided/{id}/{chapterId}', [ProjectController::class, 'createSiteSettingsGuidedItem']);
			Route::post('/settings/guided/{id}/{chapterId}/{itemId}', [ProjectController::class, 'editSiteSettingsGuidedItem']);

			Route::get('/settings/guided/delete/{id}/{chapterId}', [ProjectController::class, 'deleteSiteSettingsGuidedChapter']);
			Route::get('/settings/guided/delete/{id}/{chapterId}/{itemId}', [ProjectController::class, 'deleteSiteSettingsGuidedItem']);

			Route::get('/settings/tutorial/{id}', [ProjectController::class, 'getSiteSettingsTutorial']);
			Route::post('/settings/tutorial/state/{id}', [ProjectController::class, 'stateSiteSettingsTutorial']);
			Route::post('/settings/tutorial/pin/{id}', [ProjectController::class, 'pinSiteSettingsTutorial']);
			Route::post('/settings/tutorial/{id}', [ProjectController::class, 'createSiteSettingsTutorial']);

			Route::post('/settings/management/{id}', [ProjectController::class, 'postSiteSettingsManagement']);
			Route::delete('/settings/management/{id}', [ProjectController::class, 'postSiteSettingsManagement']);

			Route::post('/settings/model/{id}', [ProjectController::class, 'getSiteSettingsModel']);

			Route::post('/maintenance/{id}', [ProjectController::class, 'maintenance']);
			Route::post('/sitemap/{id}', [ProjectController::class, 'sitemap']);
			Route::post('/mobile/{id}', [ProjectController::class, 'updateAppMobileEnv']);

			Route::get('/page-preview/{id}/{draft?}', [PageController::class, 'pagePreview']);
			Route::get('/page/{id}', [PageController::class, 'page']);
			Route::get('/pages/{id}/publish/{response?}', [PageController::class, 'publishPage']);
			Route::get('/pages/{id}/undraft/{response?}', [PageController::class, 'undraftPage']);
			Route::get('/pages/{id}/delete/{response?}', [PageController::class, 'deletePage']);
			Route::get('/page_tree/{id}', [PageController::class, 'pageTree']);
			Route::get('/page_trees/{id}/publish/{response?}', [PageController::class, 'publishPageTree']);
			Route::get('/page_trees/{id}/undraft/{response?}', [PageController::class, 'undraftPageTree']);
			Route::get('/page_trees/{id}/delete/{response?}', [PageController::class, 'deletePageTree']);
			Route::get('/pages/{id}/components/{componentId}', [PageController::class, 'showComponentOption']);
			Route::post('/pages/{id}/components', [PageController::class, 'createPagesComponent']);
			Route::post('/pages/{id}/components/reorganize', [PageController::class, 'reorganizePagesComponent']);

			// Routes spécifiques (AVANT la route générique {componentId})
			Route::post('/pages/{id}/components/publish/{componentId}/{response?}', [PageController::class, 'publishPagesComponent']);
			Route::get('/pages/{id}/components/copy/{componentId}/{response?}', [PageController::class, 'copyPagesComponent']);
			Route::post('/pages/{id}/components/paste/{componentId?}/{response?}', [PageController::class, 'pastePagesComponent']);
			Route::post('/pages/{id}/components/undraft/{componentId}/{response?}', [PageController::class, 'undraftPagesComponent']);
			Route::post('/pages/{id}/components/delete/{componentId}/{response?}', [PageController::class, 'deletePagesComponent']);

			// Routes clipboard composants (sans {id})
			Route::get('/pages/clipboard/check', [PageController::class, 'checkClipboard']);
			Route::post('/pages/clipboard/clear', [PageController::class, 'clearClipboard']);

			// Routes copie de page entière (même environnement)
			Route::get('/pages/{id}/copy-page', [PageController::class, 'copyPage']);
			Route::post('/site/{siteId}/paste-page', [PageController::class, 'pastePage']);
			Route::get('/pages/clipboard/page/check', [PageController::class, 'checkPageClipboard']);
			Route::post('/pages/clipboard/page/clear', [PageController::class, 'clearPageClipboard']);

			// Routes export/import cross-environnement
			Route::get('/pages/{pageId}/components/{componentId}/export', [PageController::class, 'exportComponent']);
			Route::post('/pages/{pageId}/components/import', [PageController::class, 'importComponent']);
			Route::get('/pages/{id}/export', [PageController::class, 'exportPage']);
			Route::post('/site/{siteId}/import-page', [PageController::class, 'importPage']);

			// Route générique (DOIT être en dernier)
			Route::post('/pages/{id}/components/{componentId}', [PageController::class, 'editPagesComponent']);
			Route::post('/pages/{id}/components/elements/delete/{componentId}/{response?}', [PageController::class, 'deletePagesComponentElement']);

			Route::get('/delete/{id}/{response?}', [ProjectController::class, 'deleteSite']);
			Route::post('/{id}/pages/reorganize', [PageController::class, 'reorganizePages']);
			Route::post('/{id}/pages/retreive', [PageController::class, 'retreivePage']);
			Route::post('/{id}/pages/{idPage}', [PageController::class, 'createPages']);
			Route::post('/{id}/pages', [PageController::class, 'createPages']);
			Route::post('/{id}/page_trees', [PageController::class, 'createPageTrees']);
			Route::post('/{id}/page_trees/{idPageTree}', [PageController::class, 'createPageTrees']);
			Route::post('/{id}', [ProjectController::class, 'createSite']);
			Route::get('/{id}', [ProjectController::class, 'site']);
			Route::get('/{id}/{type}', [ProjectController::class, 'site']);
			Route::get('/{id}/{type}/{typeId}', [ProjectController::class, 'site']);

			Route::post('/task/trait/{id}', [ProjectController::class, 'traitTask']);
			Route::post('/task/trait/{id}/info', [ProjectController::class, 'infoTask']);
			Route::post('/task/trait/{id}/modal', [ProjectController::class, 'modalTask']);
			Route::delete('/task/trait/{id}', [ProjectController::class, 'dropTask']);
			Route::post('/themes/{id}', [ProjectController::class, 'editSiteTheme']);

			// Route::post('/settings/{id}', [ProjectController::class, 'editSiteSettings']);
			Route::post('/settings/url-pages/{id}', [ProjectController::class, 'createSiteSettingsUrlPages']);
			Route::post('/settings/social/{id}', [ProjectController::class, 'createSiteSettingsSocial']);
			Route::delete('/settings/social/{id}', [ProjectController::class, 'deleteSiteSettingsSocial']);
		});

	});

	//Media
	Route::prefix('media')->group(function () {
		Route::get('/', [MediaController::class, 'index']);
		Route::get('/search/{id?}', [MediaController::class, 'search']);
		Route::post('/item', [MediaController::class, 'create']);
		Route::post('/item-ia', [MediaController::class, 'createIa']);
		Route::delete('/item/{id}', [MediaController::class, 'delete']);
		
		Route::get('/item/show/{id}/{size?}', [MediaController::class, 'show']);
		Route::get('/item/url/{id}', [MediaController::class, 'url']);
		Route::post('/folder', [MediaController::class, 'createFolder']);
		Route::delete('/folder/{id}', [MediaController::class, 'deleteTree']);
	});

	//Billing
	Route::prefix('billing')->group(function () {

		Route::prefix('subscription')->group(function () {
			Route::get('/', [BillingController::class, 'subscription']);
			Route::get('/promostack', [BillingController::class, 'subscriptionPromoStack']);
			Route::get('/search/{id?}', [BillingController::class, 'subscriptionSearch']);
			Route::post('/chart', [BillingController::class, 'subscriptionChart']);
			// Route::get('/show/{id}', [BillingController::class, 'showInvoice']);

			// Route::get('/download/{id}', [BillingController::class, 'downloadInvoice']);
			// Route::delete('/{id}', [BillingController::class, 'deleteInvoice']);

			// Route::post('/', [BillingController::class, 'create']);
			// Route::delete('/{id}', [BillingController::class, 'delete']);
		});

		Route::prefix('invoice')->group(function () {
			Route::get('/', [BillingController::class, 'invoice']);
			Route::get('/search/{id?}', [BillingController::class, 'invoiceSearch']);
			Route::post('/chart', [BillingController::class, 'invoiceChart']);
			Route::post('/refund/{id}', [BillingController::class, 'refundInvoice']);
			Route::get('/show/{id}', [BillingController::class, 'showInvoice']);
			Route::get('/download/{id}', [BillingController::class, 'downloadInvoice']);
			Route::post('/send', [BillingController::class, 'sendInvoice']);
			Route::delete('/{id}', [BillingController::class, 'deleteInvoice']);

			// Route::post('/', [BillingController::class, 'create']);
			// Route::delete('/{id}', [BillingController::class, 'delete']);
		});	

		Route::prefix('quota')->group(function () {
			Route::post('/raz', [BillingController::class, 'razQuota']);
			Route::post('/close', [BillingController::class, 'closeQuota']);
			Route::post('/{id}', [BillingController::class, 'editQuota']);
			Route::delete('/{id}', [BillingController::class, 'deleteQuota']);
		});		
	});


	//Setting
	Route::prefix('setting')->group(function () {
		Route::get('/{tab?}', [SettingController::class, 'index']);

		Route::post('/preference', [SettingController::class, 'editPreference']);

		Route::post('/api', [SettingController::class, 'createApi']);
		Route::delete('/api/{id}', [SettingController::class, 'deleteApi']);
		
		Route::post('/git', [SettingController::class, 'createGit']);
		Route::delete('/git/{id}', [SettingController::class, 'deleteGit']);

		Route::post('/psp', [SettingController::class, 'createPsp']);
		Route::delete('/psp/{id}', [SettingController::class, 'deletePsp']);
		
		Route::get('/companie/{id}', [SettingController::class, 'getCompanie']);
		Route::post('/companie/{id}', [SettingController::class, 'editCompanie']);
		Route::post('/companie', [SettingController::class, 'createCompanie']);
		Route::delete('/companie/{id}', [SettingController::class, 'deleteCompanie']);

		Route::prefix('team')->group(function () {
			Route::post('/', [SettingController::class, 'createTeam']);
			Route::delete('/{id}', [SettingController::class, 'deleteTeam']);
			Route::post('/{id}/user', [SettingController::class, 'createTeamUser']);
			Route::get('/user/{id}', [SettingController::class, 'getTeamUser']);
			Route::post('/user/{id}', [SettingController::class, 'editTeamUser']);
			Route::delete('/user/{id}', [SettingController::class, 'deleteTeamUser']);
		});

		Route::post('/billing-model-plan', [SettingController::class, 'createBillingModelPlan']);
		Route::delete('/billing-model-plan/{id}', [SettingController::class, 'deleteBillingModelPlan']);

		Route::post('/status', [SettingController::class, 'toggleSettingState']);
	});

	//Users
	Route::prefix('user')->group(function () {
		Route::get('/notification', [UserController::class, 'getNotification']);
		Route::get('/notification/read', [UserController::class, 'readNotification']);
		Route::get('/notification/readmessage', [UserController::class, 'readMessage']);

		Route::prefix('partner')->group(function () {
			Route::get('/', [PartnerController::class, 'partner']);
			Route::get('/{id}', [PartnerController::class, 'card']);
			Route::get('/edition/rapport/{id}', [PartnerController::class, 'editionRapport']);
			Route::get('/edition/billing/{id}', [PartnerController::class, 'editionBilling']);

			Route::post('/', [PartnerController::class, 'create']);
			Route::put('/{id}', [PartnerController::class, 'edit']);
			Route::delete('/{id}', [PartnerController::class, 'delete']);
			Route::post('/istheming/{id}', [PartnerController::class, 'toogleIsTheming']);
			Route::post('/theme/{id}', [PartnerController::class, 'theme']);
			Route::post('/chart/{id?}/{idProject?}', [PartnerController::class, 'chart']);

			Route::post('/project/{id}', [PartnerProjectController::class, 'create']);
			Route::delete('/project/{id}', [PartnerProjectController::class, 'delete']);

			Route::post('/manager/{id}', [PartnerManagerController::class, 'create']);
			Route::delete('/manager/{id}', [PartnerManagerController::class, 'delete']);

			Route::post('/group/{id}', [PartnerGroupController::class, 'create']);
			Route::delete('/group/{id}', [PartnerGroupController::class, 'delete']);
			
			Route::post('/plan/{id}', [PartnerPlanController::class, 'create']);
			Route::delete('/plan/{id}', [PartnerPlanController::class, 'delete']);

			Route::post('/logo/{id}', [PartnerLogoController::class, 'create']);
			Route::put('/logo/{id}', [PartnerLogoController::class, 'edit']);
			Route::delete('/logo/{id}', [PartnerLogoController::class, 'delete']);

		});
		Route::prefix('group')->group(function () {
			Route::post('/chart/newpayment', [UserController::class, 'groupChartNewPayment']);

			Route::get('/', [UserController::class, 'group']);
			Route::get('/{id}', [UserController::class, 'groupCard']);
			Route::get('/{id}/info', [UserController::class, 'groupInfo']);
			Route::get('/{id}/list', [UserController::class, 'groupListUser']);
			Route::post('/', [UserController::class, 'createGroup']);
			Route::post('/{id}', [UserController::class, 'editGroup']);
			Route::post('/user/{id}', [UserController::class, 'createGroupUser']);
			Route::post('/import/{id}', [UserController::class, 'importGroupUser']);
			Route::post('/access/{userId}', [UserController::class, 'createGroupUserAccess']);
			Route::delete('/access/{id}', [UserController::class, 'deleteGroupUserAccess']);
			Route::delete('/{id}/{userId}', [UserController::class, 'deleteGroupUser']);
			Route::delete('/{id}', [UserController::class, 'deleteGroup']);
		});


		Route::prefix('edition')->group(function () {
			Route::get('/billing/{id}/{idProject}', [UserController::class, 'billingEdition']);
		});

		Route::get('/', [UserController::class, 'index']);
		Route::post('/import', [UserController::class, 'importUser']);
		Route::post('/search/chart', [UserController::class, 'searchActivity']);
		Route::get('/search', [UserController::class, 'search']);
		Route::get('/chart/{id}', [UserController::class, 'chart']);
		Route::post('/timeline/{id}', [UserController::class, 'createTimeline']);
		Route::post('/role/{id}', [UserController::class, 'updateRole']);
		Route::put('/{id}/profile', [UserController::class, 'updateProfile']);
		Route::post('/trial/{id}', [UserController::class, 'createTrial']);
		Route::put('/trial/{id}', [UserController::class, 'updateTrial']);
		Route::post('/trial/{id}/block', [UserController::class, 'blockTrial']);
		Route::delete('/trial/{id}', [UserController::class, 'deleteTrial']);
		Route::delete('/promotion-lock/{promotionId}/{userId}', [UserController::class, 'deletePromotionLockUser']);
		Route::get('/{id}', [UserController::class, 'card']);
		// Route::get('/card/{id}', [UserController::class, 'card']);
		Route::delete('/{id}', [UserController::class, 'delete']);

		Route::post('/resend/{id}', [UserController::class, 'resendVerification']);
	});

	//Communication
	Route::prefix('communication')->group(function () {

		// Cleaning
		Route::prefix('cleaning')->group(function () {
			Route::get('/', [CommunicationCleaningController::class, 'index']);
			Route::post('/data', [CommunicationCleaningController::class, 'data']);
			Route::post('/action', [CommunicationCleaningController::class, 'action']);
			Route::post('/action-bulk', [CommunicationCleaningController::class, 'actionBulk']);
			Route::post('/action-all', [CommunicationCleaningController::class, 'actionAll']);
			Route::post('/stats', [CommunicationCleaningController::class, 'stats']);
		});

		Route::prefix('group')->group(function () {
			Route::get('/{id}', [CommunicationController::class, 'indexGroup']);
			Route::post('/', [CommunicationController::class, 'createGroup']);
			Route::put('/{id}', [CommunicationController::class, 'editGroup']);
			Route::delete('/{id}', [CommunicationController::class, 'deleteGroup']);
		});

		Route::prefix('report')->group(function () {
			Route::get('/{id}', [CommunicationController::class, 'report']);
			Route::get('/{id}/refresh', [CommunicationController::class, 'reportRefresh']);
			Route::post('/{id}/chart/{type}/{project?}/{support?}', [CommunicationController::class, 'reportChart']);
			Route::post('/{id}/chartgroup/{type}/{project?}/{support?}', [CommunicationController::class, 'reportGroupChart']);
			Route::post('/{id}/data/{support?}', [CommunicationController::class, 'reportAllData']);
			Route::post('/{id}/datagroup/{support?}', [CommunicationController::class, 'reportAllGroupData']);
			Route::get('/{id}/recipients', [CommunicationController::class, 'reportRecipients']);
		});


		Route::get('/', [CommunicationController::class, 'index']);
		Route::get('/report-group-content', [CommunicationController::class, 'reportGroupContent']);
		Route::get('/group-conversions', [CommunicationController::class, 'groupConversions']);
		Route::get('/comm-conversions/{groupId}', [CommunicationController::class, 'commConversions'])->where('groupId', '[0-9]+');

		Route::get('/template', [CommunicationController::class, 'template']);
		Route::get('/template/pick/{pick?}', [CommunicationController::class, 'template']);
		Route::post('/template', [CommunicationController::class, 'createTemplate']);
		Route::delete('/template/{id}', [CommunicationController::class, 'deleteTemplate']);
		Route::get('/template/{id}', [CommunicationController::class, 'cardTemplate']);
		Route::get('/template/node/{id}', [CommunicationController::class, 'loadNodeTemplate']);
		Route::get('/template/edit/{id}', [CommunicationController::class, 'loadTemplate']);
		Route::post('/template/edit/{id?}', [CommunicationController::class, 'editTemplate']);
		Route::get('/template/clone/{id}', [CommunicationController::class, 'cloneTemplate']);

		Route::post('/', [CommunicationController::class, 'create']);
		Route::post('/import', [CommunicationController::class, 'import']);
		Route::get('/{id}', [CommunicationController::class, 'card'])->where('id', '[0-9]+');
		Route::get('/{id}/export', [CommunicationController::class, 'export'])->where('id', '[0-9]+');
		Route::post('/{id}/closing', [CommunicationController::class, 'closing'])->where('id', '[0-9]+');
		Route::post('/{id}/replace', [CommunicationController::class, 'replace'])->where('id', '[0-9]+');
		Route::post('/{id}/exit-on-subscription', [CommunicationController::class, 'exitOnSubscription'])->where('id', '[0-9]+');
		Route::post('/{id}/scenario/node/{nodeId}/test', [CommunicationController::class, 'testScenarioNodeEmail'])->where(['id' => '[0-9]+', 'nodeId' => '[0-9]+']);
		Route::post('/{id}/scenario', [CommunicationController::class, 'createScenario']);
		Route::post('/{id}/campaign', [CommunicationController::class, 'createCampaign']);
		Route::post('/{id}/{state}', [CommunicationController::class, 'state'])->where('state', '[0-9]+');
		Route::put('/{id}/scenario', [CommunicationController::class, 'editScenario']);
		Route::put('/{id}/campaign', [CommunicationController::class, 'editCampaign']);
		Route::get('/{id}/campaign/recipient', [CommunicationController::class, 'countCampaignRecipient']);
		Route::put('/{id}/campaign/recipient', [CommunicationController::class, 'editCampaignRecipient']);
		Route::get('/{id}/campaign/node/{nodeId}', [CommunicationController::class, 'loadCampaignNodeTemplate']);
		Route::post('/{id}/campaign/node/{nodeId?}', [CommunicationController::class, 'editCampaignNode']);
		Route::put('/{id}/campaign/node/{nodeId?}', [CommunicationController::class, 'editCampaignNode']);
		Route::post('/{id}/campaign/node/{nodeId?}/test', [CommunicationController::class, 'testCampaignNodeEmail']);

		Route::post('/{id}/scenario/node', [CommunicationController::class, 'addScenarioNode']);
		Route::put('/{id}/scenario/node', [CommunicationController::class, 'editScenarioNode']);
		Route::delete('/{id}/scenario/node/{nodeId}', [CommunicationController::class, 'deleteScenarioNode']);

		Route::get('/{id}/scenario/node/params/{nodeId}', [CommunicationController::class, 'getScenarioNodeParams']);
		Route::get('/{id}/scenario/node/branch/{nodeId}', [CommunicationController::class, 'getScenarioNodeBranch']);
		Route::put('/{id}/scenario/node/params/{nodeId}', [CommunicationController::class, 'editScenarioNodeParams']);
	});

	//Prospection
	Route::prefix('prospection')->group(function () {
		Route::get('/', [ProspectionController::class, 'index']);	
		Route::post('/chart/prospect', [ProspectionController::class, 'chartProspect']);
		Route::get('/establishment/search', [ProspectionController::class, 'search']);
		Route::get('/establishment/naf', [ProspectionController::class, 'naf']);
		Route::post('/establishment/action', [ProspectionController::class, 'actionEstablishment']);
	});
	
	//Info
	Route::prefix('info')->group(function () {
		Route::get('/enterprise', [InfoController::class, 'enterprise']);
		Route::get('/job', [InfoController::class, 'job']);
		Route::get('/payment', [InfoController::class, 'payment']);
		Route::get('/paymentinit', [InfoController::class, 'paymentInitiator']);
		Route::get('/project', [InfoController::class, 'project']);
		Route::get('/email', [InfoController::class, 'email']);
		Route::get('/group', [InfoController::class, 'group']);
		Route::get('/partner', [InfoController::class, 'partner']);
		Route::get('/user/{id}', [InfoController::class, 'userinfo']);
		Route::get('/message', [InfoController::class, 'message']);
		Route::get('/emailvalid', [InfoController::class, 'emailValid']);
		Route::get('/activity', [InfoController::class, 'activity']);
		Route::get('/activedays', [InfoController::class, 'activeDays']);
		Route::get('/promode', [InfoController::class, 'proMode']);
	});

	//Redirections
	Route::prefix('redirection')->group(function () {
		Route::get('/', [RedirectionController::class, 'index']);
		Route::post('/', [RedirectionController::class, 'create']);
		Route::get('/{id}', [RedirectionController::class, 'show']);
		Route::post('/{id}', [RedirectionController::class, 'edit']);
		Route::delete('/{id}', [RedirectionController::class, 'delete']);
		Route::post('/{id}/toggle', [RedirectionController::class, 'toggleStatus']);
		Route::post('/{id}/reset-hits', [RedirectionController::class, 'resetHits']);
	});

	//Feedbacks utilisateurs (bug / amélioration / fonctionnalité)
	Route::prefix('feedback')->group(function () {
		Route::get('/', [FeedbackController::class, 'index']);
		Route::get('/{id}', [FeedbackController::class, 'show'])->where('id', '[0-9]+');
		Route::post('/{id}', [FeedbackController::class, 'update'])->where('id', '[0-9]+');
		Route::delete('/{id}', [FeedbackController::class, 'delete'])->where('id', '[0-9]+');
	});





// Route::middleware(['auth:sanctum', 'verified'])->get('/dashboard', function () {
//     return view('dashboard');
// })->name('dashboard');


	/*
	|--------------------------------------------------------------------------
	| Laravel Blocker Web Routes
	|--------------------------------------------------------------------------
	|
	*/
	Route::group([
	    'middleware'    => ['web', 'checkblocked'],
	    'as'            => 'laravelblocker::',
	    'namespace'     => 'App\Http\Controllers\Blocker',
	], function () {

	    // Blocker
	    Route::resource('blocker', 'BlockerController');

	    // Blocker Soft Deleted
	    Route::get('blocker-deleted', 'BlockerDeletedController@index')->name('blocker-deleted');
	    Route::get('blocker-deleted/{id}', 'BlockerDeletedController@show')->name('blocker-item-show-deleted');
	    Route::put('blocker-deleted/{id}', 'BlockerDeletedController@restoreBlockedItem')->name('blocker-item-restore');
	    Route::post('blocker-deleted-restore-all', 'BlockerDeletedController@restoreAllBlockedItems')->name('blocker-deleted-restore-all');
	    Route::delete('blocker-deleted/{id}', 'BlockerDeletedController@destroy')->name('blocker-item-destroy');
	    Route::delete('blocker-deleted-destroy-all', 'BlockerDeletedController@destroyAllItems')->name('destroy-all-blocked');

	    // Blocker Search
	    Route::post('search-blocked', 'BlockerController@search')->name('search-blocked');
	    Route::post('search-blocked-deleted', 'BlockerDeletedController@search')->name('search-blocked-deleted');
	});


	/*
	|--------------------------------------------------------------------------
	| Laravel Chatify Routes
	|--------------------------------------------------------------------------
	|
	*/

	Route::get('/messaging/authorizedMessenger', [MessagesController::class, 'idAuthorized']);
	Route::get('/messaging/project/{id}/{projectId}', [MessagesController::class, 'index']);
});

Route::middleware(['web', 'checkblocked'])->group(function () {
	Route::prefix('webhook')->group(function () {
		Route::post('/fluximmo', [AdvertController::class, 'webhook'])->name('webhook.fluximmo.webhook');
		Route::post('/fluximmo-advert', [AdvertController::class, 'webhook_advert'])->name('webhook.fluximmo.webhook.advert');
		// Route::get('/fluximmo-advert', [AdvertController::class, 'webhook_advert'])->name('webhook.fluximmo.webhook.advert');
		// Route::get('/fluximmo', [AdvertController::class, 'webhook'])->name('webhook.fluximmo.webhook');
	});
});