diff --git a/app/Http/Controllers/Sales/AdminProspectController.php b/app/Http/Controllers/Sales/AdminProspectController.php index cd7fadf2..4360dd7d 100644 --- a/app/Http/Controllers/Sales/AdminProspectController.php +++ b/app/Http/Controllers/Sales/AdminProspectController.php @@ -37,6 +37,48 @@ public function index(Request $request): View|Response return response('', 200)->header('HX-Redirect', route('sales.admin-prospects.index')); } + $data = $this->getIndexData($request); + + return view('sales.admin-prospects.index', $data); + } + + /** + * 고객 상세 모달 + */ + public function modalShow(int $id): View + { + $this->checkAdminAccess(); + + $prospect = TenantProspect::with(['registeredBy', 'tenant'])->findOrFail($id); + + // 진행률 + $progress = SalesScenarioChecklist::getProspectProgress($prospect->id); + $prospect->sales_progress = $progress['sales']['percentage']; + $prospect->manager_progress = $progress['manager']['percentage']; + + // management 정보 + $management = SalesTenantManagement::findOrCreateByProspect($prospect->id); + + return view('sales.admin-prospects.partials.show-modal', compact('prospect', 'management', 'progress')); + } + + /** + * 콘텐츠 새로고침 (HTMX) + */ + public function refresh(Request $request): View + { + $this->checkAdminAccess(); + + $data = $this->getIndexData($request); + + return view('sales.admin-prospects.partials.content', $data); + } + + /** + * index 데이터 조회 (공통) + */ + private function getIndexData(Request $request): array + { // 영업 역할을 가진 사용자 목록 (영업파트너) $salesPartners = User::whereHas('userRoles', function ($q) { $q->whereHas('role', function ($rq) { @@ -48,7 +90,7 @@ public function index(Request $request): View|Response $filters = [ 'search' => $request->get('search'), 'status' => $request->get('status'), - 'registered_by' => $request->get('registered_by'), // 특정 영업파트너 필터 + 'registered_by' => $request->get('registered_by'), ]; // 쿼리 빌드 @@ -86,7 +128,6 @@ public function index(Request $request): View|Response // 진행률 100% 시 상태 자동 전환 체크 if ($progress['sales']['percentage'] === 100 && $progress['manager']['percentage'] === 100) { SalesScenarioChecklist::checkAndConvertProspectStatus($prospect->id); - // 상태가 변경되었을 수 있으므로 다시 로드 $prospect->refresh(); } @@ -117,27 +158,7 @@ public function index(Request $request): View|Response ]; }); - return view('sales.admin-prospects.index', compact('prospects', 'stats', 'salesPartners', 'partnerStats', 'filters')); - } - - /** - * 고객 상세 모달 - */ - public function modalShow(int $id): View - { - $this->checkAdminAccess(); - - $prospect = TenantProspect::with(['registeredBy', 'tenant'])->findOrFail($id); - - // 진행률 - $progress = SalesScenarioChecklist::getProspectProgress($prospect->id); - $prospect->sales_progress = $progress['sales']['percentage']; - $prospect->manager_progress = $progress['manager']['percentage']; - - // management 정보 - $management = SalesTenantManagement::findOrCreateByProspect($prospect->id); - - return view('sales.admin-prospects.partials.show-modal', compact('prospect', 'management', 'progress')); + return compact('prospects', 'stats', 'salesPartners', 'partnerStats', 'filters'); } /** diff --git a/resources/views/sales/admin-prospects/index.blade.php b/resources/views/sales/admin-prospects/index.blade.php index f27c1e61..ad9eda1d 100644 --- a/resources/views/sales/admin-prospects/index.blade.php +++ b/resources/views/sales/admin-prospects/index.blade.php @@ -2,6 +2,25 @@ @section('title', '영업파트너 고객관리') +@push('styles') + +@endpush + @section('content')
전체 영업파트너의 고객 현황을 관리합니다 (관리자 전용)
| 업체명 | -담당 파트너 | -담당 매니저 | -영업 진행률 | -매니저 진행률 | -개발 상태 | -상태 | -등록일 | -관리 | -
|---|---|---|---|---|---|---|---|---|
|
- {{ $prospect->company_name }}
- {{ $prospect->business_number }}
- |
- - @if($prospect->registeredBy) - {{ $prospect->registeredBy->name }} - @else - - - @endif - | -- @if($prospect->manager_user) - {{ $prospect->manager_user->name }} - @else - 미지정 - @endif - | -
-
-
-
-
-
- {{ $prospect->sales_progress }}%
- |
-
-
-
-
-
-
- {{ $prospect->manager_progress }}%
- |
- - - | -- - {{ $prospect->status_label }} - - | -- {{ $prospect->created_at->format('Y-m-d') }} - | -- - | -
| - 등록된 고객이 없습니다. - | -||||||||
| 업체명 | +담당 파트너 | +담당 매니저 | +영업 진행률 | +매니저 진행률 | +개발 상태 | +상태 | +등록일 | +관리 | +
|---|---|---|---|---|---|---|---|---|
|
+ {{ $prospect->company_name }}
+ {{ $prospect->business_number }}
+ |
+ + @if($prospect->registeredBy) + {{ $prospect->registeredBy->name }} + @else + - + @endif + | ++ @if($prospect->manager_user) + {{ $prospect->manager_user->name }} + @else + 미지정 + @endif + | +
+
+
+
+
+
+ {{ $prospect->sales_progress }}%
+ |
+
+
+
+
+
+
+ {{ $prospect->manager_progress }}%
+ |
+ + + | ++ + {{ $prospect->status_label }} + + | ++ {{ $prospect->created_at->format('Y-m-d') }} + | ++ + | +
| + 등록된 고객이 없습니다. + | +||||||||