fix:추천인 자동 설정 (등록자가 parent로 자동 지정)
This commit is contained in:
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user