feat: HR 모델 userProfile 관계 추가 및 서비스 개선
## 모델 개선 - Leave: userProfile relation 추가 - Salary: userProfile relation 추가 - TenantUserProfile: department, position 관계 및 label accessor 추가 ## 서비스 개선 - LeaveService: userProfile eager loading 추가 - SalaryService: 사원 정보 조회 개선 - CardService: 관계 정리 및 개선 - AttendanceService: 조회 기능 개선 ## 시더 - DummySalarySeeder 추가 - DummyCardSeeder 멀티테넌트 지원 개선 - DummyDataSeeder에 급여 시더 등록 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -17,10 +17,16 @@ public function index(array $params): LengthAwarePaginator
|
||||
|
||||
$query = Card::query()
|
||||
->where('tenant_id', $tenantId)
|
||||
->with(['assignedUser:id,name,email']);
|
||||
->with([
|
||||
'assignedUser:id,name,email',
|
||||
'assignedUser.tenantProfiles' => function ($q) use ($tenantId) {
|
||||
$q->where('tenant_id', $tenantId)
|
||||
->with('department:id,name');
|
||||
},
|
||||
]);
|
||||
|
||||
// 검색 필터
|
||||
if (!empty($params['search'])) {
|
||||
if (! empty($params['search'])) {
|
||||
$search = $params['search'];
|
||||
$query->where(function ($q) use ($search) {
|
||||
$q->where('card_name', 'like', "%{$search}%")
|
||||
@@ -30,12 +36,12 @@ public function index(array $params): LengthAwarePaginator
|
||||
}
|
||||
|
||||
// 상태 필터
|
||||
if (!empty($params['status'])) {
|
||||
if (! empty($params['status'])) {
|
||||
$query->where('status', $params['status']);
|
||||
}
|
||||
|
||||
// 담당자 필터
|
||||
if (!empty($params['assigned_user_id'])) {
|
||||
if (! empty($params['assigned_user_id'])) {
|
||||
$query->where('assigned_user_id', $params['assigned_user_id']);
|
||||
}
|
||||
|
||||
@@ -59,7 +65,13 @@ public function show(int $id): Card
|
||||
|
||||
return Card::query()
|
||||
->where('tenant_id', $tenantId)
|
||||
->with(['assignedUser:id,name,email', 'assignedUser.department', 'assignedUser.position'])
|
||||
->with([
|
||||
'assignedUser:id,name,email',
|
||||
'assignedUser.tenantProfiles' => function ($q) use ($tenantId) {
|
||||
$q->where('tenant_id', $tenantId)
|
||||
->with('department:id,name');
|
||||
},
|
||||
])
|
||||
->findOrFail($id);
|
||||
}
|
||||
|
||||
@@ -83,7 +95,7 @@ public function store(array $data): Card
|
||||
$card->created_by = $userId;
|
||||
$card->updated_by = $userId;
|
||||
|
||||
if (!empty($data['card_password'])) {
|
||||
if (! empty($data['card_password'])) {
|
||||
$card->setCardPassword($data['card_password']);
|
||||
}
|
||||
|
||||
@@ -194,7 +206,7 @@ public function getActiveCards(): array
|
||||
'id' => $card->id,
|
||||
'card_name' => $card->card_name,
|
||||
'card_company' => $card->card_company,
|
||||
'display_number' => '****-' . $card->card_number_last4,
|
||||
'display_number' => '****-'.$card->card_number_last4,
|
||||
];
|
||||
})
|
||||
->toArray();
|
||||
|
||||
Reference in New Issue
Block a user