diff --git a/app/Http/Controllers/Api/Admin/HR/EmployeeController.php b/app/Http/Controllers/Api/Admin/HR/EmployeeController.php index 600db986..806e6c59 100644 --- a/app/Http/Controllers/Api/Admin/HR/EmployeeController.php +++ b/app/Http/Controllers/Api/Admin/HR/EmployeeController.php @@ -77,13 +77,23 @@ public function store(Request $request): JsonResponse 'emergency_contact' => 'nullable|string|max:100', ]); - $employee = $this->employeeService->createEmployee($validated); + try { + $employee = $this->employeeService->createEmployee($validated); - return response()->json([ - 'success' => true, - 'message' => '사원이 등록되었습니다.', - 'data' => $employee, - ], 201); + return response()->json([ + 'success' => true, + 'message' => '사원이 등록되었습니다.', + 'data' => $employee, + ], 201); + } catch (\Throwable $e) { + report($e); + + return response()->json([ + 'success' => false, + 'message' => '사원 등록 중 오류가 발생했습니다.', + 'error' => config('app.debug') ? $e->getMessage() : null, + ], 500); + } } /** @@ -129,20 +139,30 @@ public function update(Request $request, int $id): JsonResponse 'emergency_contact' => 'nullable|string|max:100', ]); - $employee = $this->employeeService->updateEmployee($id, $validated); + try { + $employee = $this->employeeService->updateEmployee($id, $validated); + + if (! $employee) { + return response()->json([ + 'success' => false, + 'message' => '사원 정보를 찾을 수 없습니다.', + ], 404); + } + + return response()->json([ + 'success' => true, + 'message' => '사원 정보가 수정되었습니다.', + 'data' => $employee, + ]); + } catch (\Throwable $e) { + report($e); - if (! $employee) { return response()->json([ 'success' => false, - 'message' => '사원 정보를 찾을 수 없습니다.', - ], 404); + 'message' => '사원 수정 중 오류가 발생했습니다.', + 'error' => config('app.debug') ? $e->getMessage() : null, + ], 500); } - - return response()->json([ - 'success' => true, - 'message' => '사원 정보가 수정되었습니다.', - 'data' => $employee, - ]); } /** @@ -150,25 +170,42 @@ public function update(Request $request, int $id): JsonResponse */ public function destroy(Request $request, int $id): JsonResponse|Response { - $result = $this->employeeService->deleteEmployee($id); + try { + $result = $this->employeeService->deleteEmployee($id); + + if (! $result) { + if ($request->header('HX-Request')) { + return response()->json([ + 'success' => false, + 'message' => '사원 정보를 찾을 수 없습니다.', + ], 404); + } + + return response()->json([ + 'success' => false, + 'message' => '사원 정보를 찾을 수 없습니다.', + ], 404); + } + + if ($request->header('HX-Request')) { + $employees = $this->employeeService->getEmployees($request->all(), $request->integer('per_page', 20)); + + return response(view('hr.employees.partials.table', compact('employees'))); + } + + return response()->json([ + 'success' => true, + 'message' => '퇴직 처리되었습니다.', + ]); + } catch (\Throwable $e) { + report($e); - if (! $result) { return response()->json([ 'success' => false, - 'message' => '사원 정보를 찾을 수 없습니다.', - ], 404); + 'message' => '퇴직 처리 중 오류가 발생했습니다.', + 'error' => config('app.debug') ? $e->getMessage() : null, + ], 500); } - - if ($request->header('HX-Request')) { - $employees = $this->employeeService->getEmployees($request->all(), $request->integer('per_page', 20)); - - return response(view('hr.employees.partials.table', compact('employees'))); - } - - return response()->json([ - 'success' => true, - 'message' => '퇴직 처리되었습니다.', - ]); } /** diff --git a/resources/views/hr/employees/create.blade.php b/resources/views/hr/employees/create.blade.php index 3916cc12..30cb6b64 100644 --- a/resources/views/hr/employees/create.blade.php +++ b/resources/views/hr/employees/create.blade.php @@ -192,13 +192,50 @@ class="px-6 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-lg transition- @push('scripts') diff --git a/resources/views/hr/employees/edit.blade.php b/resources/views/hr/employees/edit.blade.php index 0b3f4649..5232934c 100644 --- a/resources/views/hr/employees/edit.blade.php +++ b/resources/views/hr/employees/edit.blade.php @@ -196,13 +196,48 @@ class="px-6 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-lg transition- @push('scripts')