feat: [approval] 기안함 페이지 사이즈 선택, 체크박스 선택삭제 기능 추가
- 페이지당 표시 건수 선택 (15/50/100/200/500, 기본 15) - 첫 번째 열 체크박스 추가 (전체선택/개별선택) - 선택삭제 버튼 및 bulk-delete API 엔드포인트 추가
This commit is contained in:
@@ -210,6 +210,50 @@ public function forceDestroy(int $id): JsonResponse
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 선택삭제 (기안자 본인 문서만)
|
||||
*/
|
||||
public function bulkDestroy(Request $request): JsonResponse
|
||||
{
|
||||
$ids = $request->input('ids', []);
|
||||
if (empty($ids) || ! is_array($ids)) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => '삭제할 문서를 선택하세요.',
|
||||
], 400);
|
||||
}
|
||||
|
||||
$user = auth()->user();
|
||||
$deleted = 0;
|
||||
$failed = 0;
|
||||
|
||||
foreach ($ids as $id) {
|
||||
try {
|
||||
$approval = $this->service->getApproval($id);
|
||||
if ($approval->isDeletableBy($user)) {
|
||||
$this->service->deleteApproval($id, $user);
|
||||
$deleted++;
|
||||
} else {
|
||||
$failed++;
|
||||
}
|
||||
} catch (\Throwable) {
|
||||
$failed++;
|
||||
}
|
||||
}
|
||||
|
||||
$message = "{$deleted}건 삭제 완료";
|
||||
if ($failed > 0) {
|
||||
$message .= " ({$failed}건 삭제 불가)";
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => $message,
|
||||
'deleted' => $deleted,
|
||||
'failed' => $failed,
|
||||
]);
|
||||
}
|
||||
|
||||
// =========================================================================
|
||||
// 워크플로우
|
||||
// =========================================================================
|
||||
|
||||
Reference in New Issue
Block a user