feat: [employee] 사원관리 정렬 기능 추가 (입사일/퇴직일)
- 정렬 드롭다운 추가: 입사일 빠른순/최신순, 퇴직일 최신순/빠른순, 상태순 - 기본 정렬을 입사일 빠른순으로 설정 - JSON 컬럼(json_extra.hire_date, resign_date) 기반 정렬
This commit is contained in:
@@ -48,8 +48,25 @@ public function getEmployees(array $filters = [], int $perPage = 20): LengthAwar
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 정렬
|
// 정렬
|
||||||
$query->orderByRaw("FIELD(employee_status, 'active', 'leave', 'resigned')")
|
$sortBy = $filters['sort_by'] ?? 'hire_date_asc';
|
||||||
->orderBy('created_at', 'desc');
|
switch ($sortBy) {
|
||||||
|
case 'hire_date_asc':
|
||||||
|
$query->orderByRaw("JSON_UNQUOTE(JSON_EXTRACT(json_extra, '$.hire_date')) ASC");
|
||||||
|
break;
|
||||||
|
case 'hire_date_desc':
|
||||||
|
$query->orderByRaw("JSON_UNQUOTE(JSON_EXTRACT(json_extra, '$.hire_date')) DESC");
|
||||||
|
break;
|
||||||
|
case 'resign_date_asc':
|
||||||
|
$query->orderByRaw("JSON_UNQUOTE(JSON_EXTRACT(json_extra, '$.resign_date')) ASC");
|
||||||
|
break;
|
||||||
|
case 'resign_date_desc':
|
||||||
|
$query->orderByRaw("JSON_UNQUOTE(JSON_EXTRACT(json_extra, '$.resign_date')) DESC");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$query->orderByRaw("FIELD(employee_status, 'active', 'leave', 'resigned')")
|
||||||
|
->orderBy('created_at', 'desc');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
return $query->paginate($perPage);
|
return $query->paginate($perPage);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,6 +75,17 @@ class="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 f
|
|||||||
<option value="resigned" {{ request('status') === 'resigned' ? 'selected' : '' }}>퇴직</option>
|
<option value="resigned" {{ request('status') === 'resigned' ? 'selected' : '' }}>퇴직</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
<div style="flex: 0 1 160px;">
|
||||||
|
<label class="block text-xs text-gray-500 mb-1">정렬</label>
|
||||||
|
<select name="sort_by"
|
||||||
|
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-blue-500 focus:border-blue-500">
|
||||||
|
<option value="hire_date_asc" {{ request('sort_by', 'hire_date_asc') === 'hire_date_asc' ? 'selected' : '' }}>입사일 빠른순</option>
|
||||||
|
<option value="hire_date_desc" {{ request('sort_by') === 'hire_date_desc' ? 'selected' : '' }}>입사일 최신순</option>
|
||||||
|
<option value="resign_date_desc" {{ request('sort_by') === 'resign_date_desc' ? 'selected' : '' }}>퇴직일 최신순</option>
|
||||||
|
<option value="resign_date_asc" {{ request('sort_by') === 'resign_date_asc' ? 'selected' : '' }}>퇴직일 빠른순</option>
|
||||||
|
<option value="default" {{ request('sort_by') === 'default' ? 'selected' : '' }}>상태순</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
<div class="shrink-0">
|
<div class="shrink-0">
|
||||||
<button type="submit"
|
<button type="submit"
|
||||||
hx-get="{{ route('api.admin.hr.employees.index') }}"
|
hx-get="{{ route('api.admin.hr.employees.index') }}"
|
||||||
|
|||||||
Reference in New Issue
Block a user