Files
sam-manage/app/Providers/ViewServiceProvider.php
pro 9e22f6656b fix:메뉴 뱃지 URL 기반 매칭 추가
- 라우트명뿐만 아니라 URL로도 뱃지 매칭
- 메뉴 DB에 route_name이 없어도 URL로 뱃지 표시 가능

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 16:46:17 +09:00

62 lines
1.8 KiB
PHP

<?php
namespace App\Providers;
use App\Models\Tenants\Tenant;
use App\Services\Sales\SalesManagerService;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;
class ViewServiceProvider extends ServiceProvider
{
/**
* Register services.
*/
public function register(): void
{
//
}
/**
* Bootstrap services.
*/
public function boot(): void
{
// 모든 뷰에 테넌트 목록 공유 (전역용)
View::composer('*', function ($view) {
if (auth()->check()) {
$globalTenants = Tenant::active()
->orderBy('company_name')
->get(['id', 'company_name', 'code']);
$view->with('globalTenants', $globalTenants);
}
});
// 사이드바 메뉴 뱃지 데이터
View::composer('partials.sidebar', function ($view) {
$menuBadges = [
'byRoute' => [], // 라우트명 기준
'byUrl' => [], // URL 기준
];
if (auth()->check()) {
try {
$salesManagerService = app(SalesManagerService::class);
$approvalStats = $salesManagerService->getApprovalStats();
// 영업파트너 승인 대기 건수
if ($approvalStats['pending'] > 0) {
$menuBadges['byRoute']['sales.managers.approvals'] = $approvalStats['pending'];
$menuBadges['byUrl']['/sales/managers/approvals'] = $approvalStats['pending'];
}
} catch (\Exception $e) {
// 서비스 오류 시 무시
}
}
$view->with('menuBadges', $menuBadges);
});
}
}