v7.0.0-beta.1 release
This commit is contained in:
commit
6595fd0eb5
3967 files changed
+1875383
No files matched your search
@@ -0,0 +1,96 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\Admin;
|
||||
|
||||
use App\Helpers\PermissionHelper;
|
||||
use App\Http\Controllers\Api\Base\AdminBaseController;
|
||||
use App\Http\Requests\ActivityLog\ActivityLogBulkDeleteRequest;
|
||||
use App\Http\Requests\ActivityLog\ActivityLogDeleteRequest;
|
||||
use App\Http\Requests\ActivityLog\ActivityLogIndexRequest;
|
||||
use App\Http\Resources\ActivityLogCollection;
|
||||
use App\Models\ActivityLog;
|
||||
use App\Services\ActivityLogService;
|
||||
use Exception;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
/**
|
||||
* 관리자용 활동 로그 컨트롤러
|
||||
*
|
||||
* 관리자가 시스템 활동 로그를 조회하고 삭제할 수 있는 기능을 제공합니다.
|
||||
*/
|
||||
class ActivityLogController extends AdminBaseController
|
||||
{
|
||||
public function __construct(
|
||||
private ActivityLogService $activityLogService
|
||||
) {
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* 페이지네이션된 활동 로그 목록을 조회합니다.
|
||||
*
|
||||
* @param ActivityLogIndexRequest $request 검증된 요청 객체
|
||||
* @return JsonResponse 활동 로그 목록을 포함한 JSON 응답
|
||||
*/
|
||||
public function index(ActivityLogIndexRequest $request): JsonResponse
|
||||
{
|
||||
try {
|
||||
$filters = array_filter($request->validated(), fn ($value) => $value !== null);
|
||||
|
||||
$logs = $this->activityLogService->getList($filters);
|
||||
|
||||
$collection = new ActivityLogCollection($logs);
|
||||
|
||||
$responseData = $collection->toArray($request);
|
||||
|
||||
// 컬렉션 레벨 abilities (페이지 레벨 버튼 제어용)
|
||||
$responseData['abilities'] = [
|
||||
'can_delete' => PermissionHelper::check('core.activities.delete', $request->user()),
|
||||
];
|
||||
|
||||
return $this->success('activity_log.fetch_success', $responseData);
|
||||
} catch (Exception $e) {
|
||||
return $this->error('activity_log.fetch_failed', 500, $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 활동 로그를 삭제합니다.
|
||||
*
|
||||
* @param ActivityLogDeleteRequest $request 검증된 삭제 요청
|
||||
* @param ActivityLog $activityLog 삭제할 활동 로그 모델
|
||||
* @return JsonResponse 삭제 결과
|
||||
*/
|
||||
public function destroy(ActivityLogDeleteRequest $request, ActivityLog $activityLog): JsonResponse
|
||||
{
|
||||
try {
|
||||
$this->activityLogService->delete($activityLog->id);
|
||||
|
||||
return $this->success('activity_log.delete_success');
|
||||
} catch (Exception $e) {
|
||||
Log::error('활동 로그 삭제 실패', ['id' => $activityLog->id, 'error' => $e->getMessage()]);
|
||||
|
||||
return $this->error('activity_log.delete_failed', 500);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 활동 로그를 일괄 삭제합니다.
|
||||
*
|
||||
* @param ActivityLogBulkDeleteRequest $request 검증된 일괄 삭제 요청
|
||||
* @return JsonResponse 삭제 결과
|
||||
*/
|
||||
public function bulkDestroy(ActivityLogBulkDeleteRequest $request): JsonResponse
|
||||
{
|
||||
try {
|
||||
$count = $this->activityLogService->deleteMany($request->validated('ids'));
|
||||
|
||||
return $this->success('activity_log.bulk_delete_success', ['deleted_count' => $count]);
|
||||
} catch (Exception $e) {
|
||||
Log::error('활동 로그 일괄 삭제 실패', ['error' => $e->getMessage()]);
|
||||
|
||||
return $this->error('activity_log.delete_failed', 500);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user