'tenant-console.production.items.index', 'item-fields.index' => 'tenant-console.production.item-fields.index', 'quote-formulas.index' => 'tenant-console.production.quote-formulas.index', 'quote-formulas.create' => 'tenant-console.production.quote-formulas.create', 'quote-formulas.edit' => 'tenant-console.production.quote-formulas.edit', 'quote-formulas.simulator' => 'tenant-console.production.quote-formulas.simulator', 'quote-formulas.categories.index' => 'tenant-console.production.quote-formulas.categories.index', ]; /** * 현재 유효한 테넌트 ID 반환 * * 우선순위: * 1. request attributes (tenant_console_id) - 테넌트 콘솔 새창 * 2. session (selected_tenant_id) - 메인 관리자 페이지 */ public static function getEffectiveTenantId(?int $default = null): ?int { // 테넌트 콘솔 컨텍스트 우선 $consoleTenantId = request()->attributes->get('tenant_console_id'); if ($consoleTenantId) { return (int) $consoleTenantId; } // 메인 관리자 페이지: 세션 기반 $sessionTenantId = session('selected_tenant_id'); if ($sessionTenantId && $sessionTenantId !== 'all') { return (int) $sessionTenantId; } return $default; } /** * 세션의 raw 값 반환 (all 포함) * 메인 관리자에서 "전체" 선택 여부 판단 시 사용 */ public static function getRawTenantId(): mixed { $consoleTenantId = request()->attributes->get('tenant_console_id'); if ($consoleTenantId) { return (int) $consoleTenantId; } return session('selected_tenant_id'); } /** * 테넌트 콘솔(새창) 컨텍스트인지 확인 */ public static function isTenantConsole(): bool { return (bool) request()->attributes->get('tenant_console_id'); } /** * 컨텍스트 인식 라우트 URL 생성 * * 테넌트 콘솔이면 tenant-console.* 라우트로, * 메인이면 기존 라우트로 URL 생성 * * @param string $name 메인 라우트명 (예: 'common-codes.index') * @param array $parameters 추가 파라미터 */ public static function route(string $name, array $parameters = []): string { if (! self::isTenantConsole()) { return route($name, $parameters); } $tenantId = self::getEffectiveTenantId(); $consoleName = self::$routeMap[$name] ?? 'tenant-console.'.$name; return route($consoleName, array_merge(['tenantId' => $tenantId], $parameters)); } /** * 컨텍스트 인식 리다이렉트 */ public static function redirect(string $name, array $parameters = []): \Illuminate\Http\RedirectResponse { return redirect(self::route($name, $parameters)); } }