refactor:R&D Labs M. Management 메뉴 전체 삭제
- ManagementController.php 삭제 - lab/management/ 뷰 디렉토리 전체 삭제 (11개 파일) - sidebar-static.blade.php에서 M. Management 섹션 제거 - routes/web.php에서 lab.management.* 라우트 제거 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,174 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Lab;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\SalesScenarioService;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\View\View;
|
||||
|
||||
/**
|
||||
* R&D Labs > M. 관리 메뉴 컨트롤러
|
||||
*/
|
||||
class ManagementController extends Controller
|
||||
{
|
||||
public function __construct(
|
||||
private SalesScenarioService $salesScenarioService
|
||||
) {}
|
||||
|
||||
/**
|
||||
* Presentation 레이아웃 페이지를 위한 HX-Redirect 처리
|
||||
* (presentation 레이아웃은 #main-content가 없어서 HTMX swap 불가)
|
||||
*/
|
||||
private function handlePresentationPage(Request $request, string $routeName): ?Response
|
||||
{
|
||||
if ($request->header('HX-Request')) {
|
||||
return response('', 200)->header('HX-Redirect', route($routeName));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// 바로빌 테넌트 관리
|
||||
public function barobillTenant(Request $request): View|Response
|
||||
{
|
||||
if ($redirect = $this->handlePresentationPage($request, 'lab.management.barobill-tenant')) {
|
||||
return $redirect;
|
||||
}
|
||||
return view('lab.management.barobill-tenant');
|
||||
}
|
||||
|
||||
// 전자세금계산서 전략
|
||||
public function taxInvoiceStrategy(Request $request): View|Response
|
||||
{
|
||||
if ($redirect = $this->handlePresentationPage($request, 'lab.management.tax-invoice-strategy')) {
|
||||
return $redirect;
|
||||
}
|
||||
return view('lab.management.tax-invoice-strategy');
|
||||
}
|
||||
|
||||
// 전자세금계산서
|
||||
public function taxInvoice(Request $request): View|Response
|
||||
{
|
||||
if ($redirect = $this->handlePresentationPage($request, 'lab.management.tax-invoice')) {
|
||||
return $redirect;
|
||||
}
|
||||
return view('lab.management.tax-invoice');
|
||||
}
|
||||
|
||||
// 사업자등록번호 진위 확인
|
||||
public function businessVerify(Request $request): View|Response
|
||||
{
|
||||
if ($redirect = $this->handlePresentationPage($request, 'lab.management.business-verify')) {
|
||||
return $redirect;
|
||||
}
|
||||
return view('lab.management.business-verify');
|
||||
}
|
||||
|
||||
// 영업관리 & 매니저 미팅관리
|
||||
public function salesMeeting(Request $request): View|Response
|
||||
{
|
||||
if ($redirect = $this->handlePresentationPage($request, 'lab.management.sales-meeting')) {
|
||||
return $redirect;
|
||||
}
|
||||
return view('lab.management.sales-meeting');
|
||||
}
|
||||
|
||||
// 카드 세무항목 매칭 전략
|
||||
public function cardTaxMatching(Request $request): View|Response
|
||||
{
|
||||
if ($redirect = $this->handlePresentationPage($request, 'lab.management.card-tax-matching')) {
|
||||
return $redirect;
|
||||
}
|
||||
return view('lab.management.card-tax-matching');
|
||||
}
|
||||
|
||||
// 카드 사용내역 수집 후 매칭
|
||||
public function cardUsageMatching(Request $request): View|Response
|
||||
{
|
||||
if ($redirect = $this->handlePresentationPage($request, 'lab.management.card-usage-matching')) {
|
||||
return $redirect;
|
||||
}
|
||||
return view('lab.management.card-usage-matching');
|
||||
}
|
||||
|
||||
// 계좌입출금 내역 조회 API
|
||||
public function accountApi(Request $request): View|Response
|
||||
{
|
||||
if ($redirect = $this->handlePresentationPage($request, 'lab.management.account-api')) {
|
||||
return $redirect;
|
||||
}
|
||||
return view('lab.management.account-api');
|
||||
}
|
||||
|
||||
// 영업관리 시나리오
|
||||
public function salesScenario()
|
||||
{
|
||||
$steps = SalesScenarioService::getScenarioSteps();
|
||||
$user = auth()->user();
|
||||
$checklist = $user ? $this->salesScenarioService->getUserChecklist($user) : [];
|
||||
$progress = $user ? $this->salesScenarioService->getOverallProgress($user) : ['total' => 0, 'checked' => 0, 'percent' => 0];
|
||||
|
||||
return view('lab.management.sales-scenario', compact('steps', 'checklist', 'progress'));
|
||||
}
|
||||
|
||||
// 영업관리 시나리오 체크리스트 조회 API
|
||||
public function salesScenarioChecklist(): JsonResponse
|
||||
{
|
||||
$user = auth()->user();
|
||||
|
||||
if (! $user) {
|
||||
return response()->json(['success' => false, 'message' => '인증이 필요합니다.'], 401);
|
||||
}
|
||||
|
||||
$data = $this->salesScenarioService->getUserChecklist($user);
|
||||
$progress = $this->salesScenarioService->getOverallProgress($user);
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'data' => $data,
|
||||
'progress' => $progress,
|
||||
]);
|
||||
}
|
||||
|
||||
// 영업관리 시나리오 체크포인트 토글 API
|
||||
public function salesScenarioToggle(Request $request): JsonResponse
|
||||
{
|
||||
$user = auth()->user();
|
||||
|
||||
if (! $user) {
|
||||
return response()->json(['success' => false, 'message' => '인증이 필요합니다.'], 401);
|
||||
}
|
||||
|
||||
$validated = $request->validate([
|
||||
'step_id' => 'required|integer|min:1|max:6',
|
||||
'checkpoint_index' => 'required|integer|min:0',
|
||||
'is_checked' => 'required|boolean',
|
||||
]);
|
||||
|
||||
$checkedIndices = $this->salesScenarioService->toggleCheckpoint(
|
||||
$user,
|
||||
$validated['step_id'],
|
||||
$validated['checkpoint_index'],
|
||||
$validated['is_checked']
|
||||
);
|
||||
|
||||
$progress = $this->salesScenarioService->getOverallProgress($user);
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'data' => $checkedIndices,
|
||||
'progress' => $progress,
|
||||
]);
|
||||
}
|
||||
|
||||
// 매니저 시나리오
|
||||
public function managerScenario(Request $request): View|Response
|
||||
{
|
||||
if ($redirect = $this->handlePresentationPage($request, 'lab.management.manager-scenario')) {
|
||||
return $redirect;
|
||||
}
|
||||
return view('lab.management.manager-scenario');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user