diff --git a/app/Http/Controllers/Sales/BusinessCardRequestController.php b/app/Http/Controllers/Sales/BusinessCardRequestController.php index ac277ad3..2237988c 100644 --- a/app/Http/Controllers/Sales/BusinessCardRequestController.php +++ b/app/Http/Controllers/Sales/BusinessCardRequestController.php @@ -15,7 +15,7 @@ public function __construct( ) {} /** - * 목록 페이지 (관리자: 관리뷰 / 파트너: 신청뷰) + * 파트너 명함신청 (신청폼 + 이력) - 모든 사용자 */ public function index(Request $request): View|Response { @@ -24,26 +24,37 @@ public function index(Request $request): View|Response } $user = auth()->user(); - - if ($user->isAdmin()) { - $search = $request->get('search'); - $stats = $this->service->getStats(); - $pendingRequests = $this->service->getPendingRequests($search); - $processedRequests = $this->service->getProcessedRequests($search); - - return view('sales.business-cards.admin-index', compact( - 'stats', - 'pendingRequests', - 'processedRequests', - 'search' - )); - } - $myRequests = $this->service->getMyRequests($user->id); return view('sales.business-cards.partner-index', compact('user', 'myRequests')); } + /** + * 명함신청 처리 (관리자 전용 - 대기/완료 2분할) + */ + public function manage(Request $request): View|Response + { + if ($request->header('HX-Request')) { + return response('', 200)->header('HX-Redirect', route('sales.business-cards.manage')); + } + + if (! auth()->user()->isAdmin()) { + abort(403, '관리자만 접근할 수 있습니다.'); + } + + $search = $request->get('search'); + $stats = $this->service->getStats(); + $pendingRequests = $this->service->getPendingRequests($search); + $processedRequests = $this->service->getProcessedRequests($search); + + return view('sales.business-cards.admin-index', compact( + 'stats', + 'pendingRequests', + 'processedRequests', + 'search' + )); + } + /** * 명함 신청 등록 */ @@ -86,7 +97,7 @@ public function process(Request $request, int $id) ]); } - return redirect()->route('sales.business-cards.index') + return redirect()->route('sales.business-cards.manage') ->with('success', '처리가 완료되었습니다.'); } } diff --git a/app/Providers/ViewServiceProvider.php b/app/Providers/ViewServiceProvider.php index 46db0ec6..3688669e 100644 --- a/app/Providers/ViewServiceProvider.php +++ b/app/Providers/ViewServiceProvider.php @@ -60,12 +60,12 @@ public function boot(): void $menuBadges['byUrl']['/sales/managers/approvals'] = $approvalStats['pending']; } - // 명함신청 대기 건수 + // 명함신청 대기 건수 (관리자용 처리 메뉴에 표시) $businessCardService = app(BusinessCardRequestService::class); $businessCardPending = $businessCardService->getPendingCount(); if ($businessCardPending > 0) { - $menuBadges['byRoute']['sales.business-cards.index'] = $businessCardPending; - $menuBadges['byUrl']['/sales/business-cards'] = $businessCardPending; + $menuBadges['byRoute']['sales.business-cards.manage'] = $businessCardPending; + $menuBadges['byUrl']['/sales/business-cards/manage'] = $businessCardPending; } } catch (\Exception $e) { // 서비스 오류 시 무시 diff --git a/routes/web.php b/routes/web.php index 748e288e..99780f80 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1283,9 +1283,10 @@ ->name('approvals.detail'); }); - // 명함신청 관리 + // 명함신청 Route::get('business-cards', [\App\Http\Controllers\Sales\BusinessCardRequestController::class, 'index'])->name('business-cards.index'); Route::post('business-cards', [\App\Http\Controllers\Sales\BusinessCardRequestController::class, 'store'])->name('business-cards.store'); + Route::get('business-cards/manage', [\App\Http\Controllers\Sales\BusinessCardRequestController::class, 'manage'])->name('business-cards.manage'); Route::post('business-cards/{id}/process', [\App\Http\Controllers\Sales\BusinessCardRequestController::class, 'process'])->name('business-cards.process'); // 매니저 검색 (리소스 라우트보다 먼저 정의해야 함!)