@php
$expertiseOrder = [
'Marketing Digital' => 0,
'Marketing_Digital' => 0,
'Marketing de contenu' => 1,
'Marketing_de_contenu' => 1,
'Content Marketing' => 1,
'Social Media' => 2,
'Social Média' => 2,
'Social_Media' => 2,
'Paid Ads' => 3,
'Paid_Ads' => 3,
'SEO' => 4,
'Analytics et data' => 5,
'Analytics_et_data' => 5,
'Développement & technologies' => 6,
'Développement_&_technologies' => 6,
'Développement Web' => 6,
'Automation' => 7,
];
$expertiseLabels = [
'Paid_Ads' => 'Paid Ads',
'SEO' => 'SEO/GEO',
'Social_Media' => 'Social Média',
'Développement_&_technologies' => 'Développement & technologies',
'Développement Web' => 'Développement & technologies',
'Marketing_de_contenu' => 'Marketing de contenu',
'Content Marketing' => 'Marketing de contenu',
'Marketing_Digital' => 'Marketing Digital',
'Analytics_et_data' => 'Analytics et data',
'Automation' => 'Automation',
];
$serviceGroups = collect($groupedServices ?? [])->sortBy(function ($services, $categoryName) use ($expertiseOrder) {
$service = $services->first();
return $expertiseOrder[$service->category_slug ?? null]
?? $expertiseOrder[$categoryName]
?? optional($service)->order
?? 999;
});
$fallbackExpertises = [
[
'label' => 'Paid Ads',
'desc' => 'Améliorez votre ROI',
'href' => route('expertises.show', 'Paid_Ads'),
'services' => [
['label' => 'Google Ads (SEA)', 'desc' => 'Touchez les clients qui recherchent déjà vos services, avec un ROI optimisé.', 'href' => route('expertises.show', 'Paid_Ads'), 'icon' => 'MagnifyingGlassIcon'],
['label' => 'Social Ads', 'desc' => 'Ciblez les bonnes audiences avec des messages qui marquent.', 'href' => route('expertises.show', 'Paid_Ads'), 'icon' => 'UserGroupIcon'],
['label' => 'Amazon Ads', 'desc' => 'Augmentez vos ventes sur la marketplace la plus puissante du monde.', 'href' => route('expertises.show', 'Paid_Ads'), 'icon' => 'GlobeAltIcon'],
['label' => 'Programmatique et display', 'desc' => 'Diffusez vos campagnes au bon endroit, au bon moment, au bon prix.', 'href' => route('expertises.show', 'Paid_Ads'), 'icon' => 'ChartBarIcon'],
],
],
['label' => 'Marketing de contenu', 'desc' => 'Touchez votre public cible', 'href' => route('expertises.show', 'Marketing_de_contenu'), 'services' => []],
['label' => 'Développement & technologies', 'desc' => 'Des solutions sur-mesure', 'href' => route('expertises.show', rawurldecode('D%C3%A9veloppement_%26_technologies')), 'services' => []],
['label' => 'Analytics et data', 'desc' => 'Mesurez l’efficacité de vos actions', 'href' => route('expertises.show', 'Analytics_et_data'), 'services' => []],
['label' => 'Marketing Digital', 'desc' => 'Clarifiez vos priorités, structurez votre croissance.', 'href' => route('expertises.show', 'Marketing_Digital'), 'services' => []],
['label' => 'Automation', 'desc' => 'Automatisez vos actions marketing', 'href' => route('expertises.show', 'Automation'), 'services' => []],
['label' => 'SEO', 'desc' => 'Améliorez votre positionnement', 'href' => route('expertises.show', 'SEO'), 'services' => []],
['label' => 'Social Média', 'desc' => 'Touchez, engagez et convertissez votre audience.', 'href' => route('expertises.show', 'Social_Media'), 'services' => []],
];
$fallbackExpertises = collect($fallbackExpertises)
->sortBy(fn ($item) => $expertiseOrder[$item['label']] ?? 999)
->values()
->all();
$icons = ['MegaphoneIcon', 'PencilSquareIcon', 'CodeBracketIcon', 'ChartBarIcon', 'GlobeAltIcon', 'BoltIcon', 'MagnifyingGlassIcon', 'UserGroupIcon'];
$expertiseGroups = $serviceGroups->isNotEmpty()
? $serviceGroups->map(function ($services, $categoryName) use ($icons, $expertiseLabels) {
$service = $services->first();
$label = $expertiseLabels[$service->category_slug ?? null]
?? $expertiseLabels[$categoryName]
?? $categoryName;
return [
'label' => $label,
'desc' => $service->categ_description ?? 'Decouvrir cette expertise',
'href' => route('expertises.show', $service->category_slug),
'services' => $services->map(function ($item, $index) use ($icons) {
$description = $item->description;
if ($item->name === 'Smsing' && blank($description)) {
$description = 'Envoyez des messages courts et percutants, lus en quelques secondes';
}
return [
'label' => $item->name,
'desc' => $description,
'href' => route('services.show', $item->slug),
'icon' => $icons[$index % count($icons)],
'iconHtml' => $item->icon,
];
})->values()->all(),
];
})->values()->all()
: $fallbackExpertises;
$expertiseLinks = $expertiseGroups;
$currentExpertiseSlug = request()->routeIs('expertises.show') ? request()->route('slug') : null;
$activeExpertiseIndex = 0;
if ($currentExpertiseSlug) {
$matchedExpertiseIndex = collect($expertiseGroups)->search(function ($group) use ($currentExpertiseSlug) {
$groupPath = parse_url($group['href'], PHP_URL_PATH) ?: '';
return rawurldecode(basename($groupPath)) === $currentExpertiseSlug;
});
if ($matchedExpertiseIndex !== false) {
$activeExpertiseIndex = $matchedExpertiseIndex;
}
}
$resources = [
['label' => 'Blog', 'desc' => 'Faites un état des lieux du référencement de votre site', 'href' => route('blog'), 'icon' => 'NewspaperIcon'],
['label' => 'Etude de cas', 'desc' => 'Faites un état des lieux du référencement de votre site', 'href' => route('caseStudie'), 'icon' => 'DocumentChartBarIcon'],
];
@endphp