feat: [hr] 슈퍼관리자 근태/신청 삭제 및 영구삭제 기능 추가
- AttendanceService: forceDeleteAttendance 메서드 추가 - LeaveService: deleteLeave(모든 상태), forceDeleteLeave 메서드 추가 - Controller: force 파라미터 + 슈퍼관리자 권한 분기 - 근태 테이블: 슈퍼관리자에게 삭제/영구삭제 버튼 표시 - 신청 테이블: 슈퍼관리자에게 삭제/영구삭제 버튼 표시
This commit is contained in:
@@ -177,12 +177,27 @@ public function cancel(Request $request, int $id): JsonResponse
|
||||
}
|
||||
|
||||
/**
|
||||
* pending 상태 신청 삭제
|
||||
* 신청 삭제 (일반: pending만 / 슈퍼관리자: 모든 상태, force 영구삭제)
|
||||
*/
|
||||
public function destroy(Request $request, int $id): JsonResponse
|
||||
{
|
||||
try {
|
||||
$leave = $this->leaveService->deletePendingLeave($id);
|
||||
$force = $request->boolean('force');
|
||||
$isSuperAdmin = auth()->user()->isSuperAdmin();
|
||||
|
||||
if ($force) {
|
||||
if (! $isSuperAdmin) {
|
||||
return response()->json(['success' => false, 'message' => '권한이 없습니다.'], 403);
|
||||
}
|
||||
$leave = $this->leaveService->forceDeleteLeave($id);
|
||||
$message = '신청이 영구 삭제되었습니다.';
|
||||
} elseif ($isSuperAdmin) {
|
||||
$leave = $this->leaveService->deleteLeave($id);
|
||||
$message = '신청이 삭제되었습니다.';
|
||||
} else {
|
||||
$leave = $this->leaveService->deletePendingLeave($id);
|
||||
$message = '신청이 삭제되었습니다.';
|
||||
}
|
||||
|
||||
if (! $leave) {
|
||||
return response()->json([
|
||||
@@ -193,7 +208,7 @@ public function destroy(Request $request, int $id): JsonResponse
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => '신청이 삭제되었습니다.',
|
||||
'message' => $message,
|
||||
]);
|
||||
} catch (\Throwable $e) {
|
||||
report($e);
|
||||
|
||||
Reference in New Issue
Block a user