From ce942e899974fef9d182b56a6bd6d2d89a102bb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Thu, 26 Feb 2026 19:37:07 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20[employee]=20=EC=82=AC=EC=9B=90?= =?UTF-8?q?=EA=B4=80=EB=A6=AC=20=EC=A0=95=EB=A0=AC=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20(=EC=9E=85=EC=82=AC=EC=9D=BC/=ED=87=B4?= =?UTF-8?q?=EC=A7=81=EC=9D=BC)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 정렬 드롭다운 추가: 입사일 빠른순/최신순, 퇴직일 최신순/빠른순, 상태순 - 기본 정렬을 입사일 빠른순으로 설정 - JSON 컬럼(json_extra.hire_date, resign_date) 기반 정렬 --- app/Services/HR/EmployeeService.php | 21 ++++++++++++++++++-- resources/views/hr/employees/index.blade.php | 11 ++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/app/Services/HR/EmployeeService.php b/app/Services/HR/EmployeeService.php index d5e12a53..69184f50 100644 --- a/app/Services/HR/EmployeeService.php +++ b/app/Services/HR/EmployeeService.php @@ -48,8 +48,25 @@ public function getEmployees(array $filters = [], int $perPage = 20): LengthAwar } // 정렬 - $query->orderByRaw("FIELD(employee_status, 'active', 'leave', 'resigned')") - ->orderBy('created_at', 'desc'); + $sortBy = $filters['sort_by'] ?? 'hire_date_asc'; + 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); } diff --git a/resources/views/hr/employees/index.blade.php b/resources/views/hr/employees/index.blade.php index dfd5bee5..e31ab205 100644 --- a/resources/views/hr/employees/index.blade.php +++ b/resources/views/hr/employees/index.blade.php @@ -75,6 +75,17 @@ class="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 f +
+ + +