feat:영업파트너 승인 페이지 추가 (본사 관리자 전용)
- 승인 대기 목록 페이지 (/sales/managers/approvals) - isAdmin() 권한 체크: admin 또는 super_admin만 접근 가능 - 승인/반려 기능 (AJAX 지원) - 상세 보기 모달 - 승인 대기 통계 (오늘 승인/반려 수) - DB 메뉴 추가: 영업관리 > 영업파트너 승인 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -332,4 +332,81 @@ public function deleteDocument(int $id, int $documentId)
|
||||
return redirect()->back()
|
||||
->with('success', '서류가 삭제되었습니다.');
|
||||
}
|
||||
|
||||
/**
|
||||
* 영업파트너 승인 목록 (본사 관리자 전용)
|
||||
*/
|
||||
public function approvals(Request $request): View|Response
|
||||
{
|
||||
// 권한 체크: admin 역할만 접근 가능
|
||||
if (!auth()->user()->isAdmin()) {
|
||||
abort(403, '접근 권한이 없습니다.');
|
||||
}
|
||||
|
||||
if ($request->header('HX-Request')) {
|
||||
return response('', 200)->header('HX-Redirect', route('sales.managers.approvals'));
|
||||
}
|
||||
|
||||
$filters = [
|
||||
'search' => $request->get('search'),
|
||||
'approval_status' => 'pending', // 승인 대기만
|
||||
];
|
||||
|
||||
$partners = $this->service->getSalesPartners($filters)->paginate(20);
|
||||
$stats = $this->service->getApprovalStats();
|
||||
|
||||
return view('sales.managers.approvals', compact('partners', 'stats'));
|
||||
}
|
||||
|
||||
/**
|
||||
* 승인 목록에서 승인 처리
|
||||
*/
|
||||
public function approveFromList(Request $request, int $id)
|
||||
{
|
||||
// 권한 체크
|
||||
if (!auth()->user()->isAdmin()) {
|
||||
abort(403, '접근 권한이 없습니다.');
|
||||
}
|
||||
|
||||
$partner = User::findOrFail($id);
|
||||
$this->service->approve($partner, auth()->id());
|
||||
|
||||
if ($request->header('HX-Request')) {
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => "{$partner->name}님이 승인되었습니다.",
|
||||
]);
|
||||
}
|
||||
|
||||
return redirect()->route('sales.managers.approvals')
|
||||
->with('success', "{$partner->name}님이 승인되었습니다.");
|
||||
}
|
||||
|
||||
/**
|
||||
* 승인 목록에서 반려 처리
|
||||
*/
|
||||
public function rejectFromList(Request $request, int $id)
|
||||
{
|
||||
// 권한 체크
|
||||
if (!auth()->user()->isAdmin()) {
|
||||
abort(403, '접근 권한이 없습니다.');
|
||||
}
|
||||
|
||||
$validated = $request->validate([
|
||||
'rejection_reason' => 'required|string|max:1000',
|
||||
]);
|
||||
|
||||
$partner = User::findOrFail($id);
|
||||
$this->service->reject($partner, auth()->id(), $validated['rejection_reason']);
|
||||
|
||||
if ($request->header('HX-Request')) {
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => "{$partner->name}님이 반려되었습니다.",
|
||||
]);
|
||||
}
|
||||
|
||||
return redirect()->route('sales.managers.approvals')
|
||||
->with('success', "{$partner->name}님이 반려되었습니다.");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user