From 51e2525b6f5884ee10949c134bc217034e868e9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Wed, 25 Feb 2026 05:36:32 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20[business-card]=20=EB=A9=94?= =?UTF-8?q?=EB=89=B4=202=EA=B0=9C=EB=A1=9C=20=EB=B6=84=EB=A6=AC=20(?= =?UTF-8?q?=ED=8C=8C=ED=8A=B8=EB=84=88=20=EB=AA=85=ED=95=A8=EC=8B=A0?= =?UTF-8?q?=EC=B2=AD=20/=20=EB=AA=85=ED=95=A8=EC=8B=A0=EC=B2=AD=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 파트너 명함신청 (/sales/business-cards): 모든 사용자 (신청폼+이력) - 명함신청 처리 (/sales/business-cards/manage): 관리자 전용 (2분할) - 뱃지를 manage 라우트에 연동 --- .../Sales/BusinessCardRequestController.php | 45 ++++++++++++------- app/Providers/ViewServiceProvider.php | 6 +-- routes/web.php | 3 +- 3 files changed, 33 insertions(+), 21 deletions(-) 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'); // 매니저 검색 (리소스 라우트보다 먼저 정의해야 함!)