feat: [esign] 사원 불러오기 기능 추가 및 랜덤 데이터 품질 개선

- 근로계약서 시 '사원 불러오기' 버튼으로 직원 검색/선택 기능
- fillRandomVariables 스마트 기본값 생성 (테스트_ 접두사 제거)
- searchEmployees API 엔드포인트 추가
This commit is contained in:
김보곤
2026-03-11 14:27:32 +09:00
parent b007fdbcb0
commit bb3ffc6085
3 changed files with 260 additions and 4 deletions

View File

@@ -75,6 +75,45 @@ public function searchPartners(Request $request): JsonResponse
return response()->json(['success' => true, 'data' => $data]);
}
/**
* 사원 검색 (근로계약서용)
*/
public function searchEmployees(Request $request): JsonResponse
{
$q = trim($request->input('q', ''));
$tenantId = session('selected_tenant_id', 1);
$query = \App\Models\HR\Employee::where('tenant_id', $tenantId)
->where('employee_status', 'active')
->with(['user', 'department']);
if ($q !== '') {
$query->where(function ($w) use ($q) {
$w->whereHas('user', fn ($u) => $u->where('name', 'like', "%{$q}%")
->orWhere('phone', 'like', "%{$q}%")
->orWhere('email', 'like', "%{$q}%"))
->orWhereHas('department', fn ($d) => $d->where('name', 'like', "%{$q}%"));
});
}
$employees = $query->limit(20)->get();
$data = $employees->map(fn ($emp) => [
'id' => $emp->id,
'name' => $emp->user?->name,
'phone' => $emp->user?->phone,
'email' => $emp->user?->email,
'department' => $emp->department?->name,
'position' => $emp->position_label,
'job_title' => $emp->job_title_label,
'address' => $emp->address,
'hire_date' => $emp->hire_date,
'birth_year' => $emp->resident_number ? ('19'.substr($emp->resident_number, 0, 2)) : null,
]);
return response()->json(['success' => true, 'data' => $data]);
}
/**
* 고객(명함 등록 고객) 검색
*/