fix:추천인 자동 설정 (등록자가 parent로 자동 지정)

This commit is contained in:
pro
2026-01-27 21:28:59 +09:00
parent 5aaffe13a2
commit 9411871655
4 changed files with 19 additions and 36 deletions

View File

@@ -48,13 +48,10 @@ public function create(): View
// 영업 역할 목록
$roles = $this->service->getSalesRoles();
// 추천인(유치자) 후보
$recommenders = $this->service->getRecommenderCandidates();
// 문서 타입 목록
$documentTypes = SalesManagerDocument::DOCUMENT_TYPES;
return view('sales.managers.create', compact('roles', 'recommenders', 'documentTypes'));
return view('sales.managers.create', compact('roles', 'documentTypes'));
}
/**
@@ -68,7 +65,6 @@ public function store(Request $request)
'email' => 'required|email|max:255|unique:users,email',
'phone' => 'nullable|string|max:20',
'password' => 'required|string|min:4|confirmed',
'parent_id' => 'nullable|exists:users,id',
'role_ids' => 'required|array|min:1',
'role_ids.*' => 'exists:roles,id',
'documents' => 'nullable|array',
@@ -77,6 +73,15 @@ public function store(Request $request)
'documents.*.description' => 'nullable|string|max:500',
]);
// 등록자가 영업파트너인 경우 자동으로 추천인(parent)으로 설정
// 본사 관리자가 등록하는 경우 parent_id는 null (최상위 파트너)
$currentUser = auth()->user();
$isSalesPartner = $currentUser->userRoles()
->whereHas('role', fn($q) => $q->whereIn('name', ['sales', 'manager', 'recruiter']))
->exists();
$validated['parent_id'] = $isSalesPartner ? $currentUser->id : null;
// 문서 배열 구성
$documents = [];
if ($request->hasFile('documents')) {
@@ -122,14 +127,11 @@ public function show(int $id): View
*/
public function edit(int $id): View
{
$partner = User::with(['userRoles.role', 'salesDocuments'])->findOrFail($id);
$partner = User::with(['userRoles.role', 'salesDocuments', 'parent'])->findOrFail($id);
// 영업 역할 목록
$roles = $this->service->getSalesRoles();
// 추천인(유치자) 후보
$recommenders = $this->service->getRecommenderCandidates($id);
// 현재 역할 ID 목록
$currentRoleIds = $partner->userRoles->pluck('role_id')->toArray();
@@ -137,7 +139,7 @@ public function edit(int $id): View
$documentTypes = SalesManagerDocument::DOCUMENT_TYPES;
return view('sales.managers.edit', compact(
'partner', 'roles', 'recommenders', 'currentRoleIds', 'documentTypes'
'partner', 'roles', 'currentRoleIds', 'documentTypes'
));
}
@@ -153,7 +155,6 @@ public function update(Request $request, int $id)
'email' => 'required|email|max:255|unique:users,email,' . $id,
'phone' => 'nullable|string|max:20',
'password' => 'nullable|string|min:4|confirmed',
'parent_id' => 'nullable|exists:users,id',
'role_ids' => 'required|array|min:1',
'role_ids.*' => 'exists:roles,id',
'documents' => 'nullable|array',