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')