feat:E-Sign 계약 생성 영업파트너 검색 모달 추가

- EsignApiController에 searchPartners() 검색 API 추가
- SalesPartner 모델 $fillable에 company_name, biz_no, address 추가
- User 모델에 salesPartner() HasOne 관계 추가
- create.blade.php에 PartnerSearchModal 컴포넌트 + 자동채우기 로직 추가
- web.php에 search-partners 라우트 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
김보곤
2026-02-14 10:48:31 +09:00
parent e0627e04ac
commit 92c78b353e
5 changed files with 187 additions and 1 deletions

View File

@@ -5,6 +5,7 @@
use App\Http\Controllers\Controller;
use App\Mail\EsignRequestMail;
use App\Models\ESign\EsignContract;
use App\Models\User;
use App\Services\ESign\DocxToPdfConverter;
use App\Models\ESign\EsignFieldTemplate;
use App\Models\ESign\EsignFieldTemplateItem;
@@ -22,6 +23,43 @@
class EsignApiController extends Controller
{
/**
* 영업파트너 검색
*/
public function searchPartners(Request $request): JsonResponse
{
$q = trim($request->input('q', ''));
$query = User::where('is_active', true)
->whereIn('role', ['sales', 'manager'])
->with('salesPartner');
if ($q !== '') {
$query->where(function ($w) use ($q) {
$w->where('name', 'like', "%{$q}%")
->orWhere('email', 'like', "%{$q}%")
->orWhere('phone', 'like', "%{$q}%");
});
}
$users = $query->orderBy('name')->limit(20)->get();
$data = $users->map(function ($user) {
$sp = $user->salesPartner;
return [
'id' => $user->id,
'name' => $user->name,
'phone' => $user->phone,
'email' => $user->email,
'company_name' => $sp?->company_name,
'biz_no' => $sp?->biz_no,
'address' => $sp?->address,
];
});
return response()->json(['success' => true, 'data' => $data]);
}
/**
* 법인도장 조회
*/