update vm ticket

This commit is contained in:
baodev0
2026-07-14 17:03:38 +07:00
parent f035730a44
commit 401dcc8783
24 changed files with 950 additions and 31 deletions
@@ -136,6 +136,97 @@ class PostController extends Controller
]);
}
public function trashed(Request $request): JsonResponse
{
$perPage = min((int) $request->get('per_page', 15), 100);
$paginator = Post::onlyTrashed()
->with('category')
->when(
$request->filled('keyword'),
fn ($q) => $q->where('title', 'like', '%' . $request->string('keyword')->toString() . '%')
)
->orderByDesc('deleted_at')
->paginate($perPage);
return response()->json([
'error' => false,
'data' => [
'items' => PostResource::collection($paginator->items()),
'total' => $paginator->total(),
'per_page' => $paginator->perPage(),
'current_page' => $paginator->currentPage(),
'last_page' => $paginator->lastPage(),
],
]);
}
public function restore(int $id): JsonResponse
{
$post = Post::onlyTrashed()->find($id);
if (!$post) {
return response()->json(['error' => true, 'message' => 'Không tìm thấy bài viết.'], 404);
}
$post->restore();
$this->revalidation->revalidateDocs();
return response()->json(['error' => false, 'message' => 'Khôi phục bài viết thành công.']);
}
public function forceDelete(int $id): JsonResponse
{
$post = Post::onlyTrashed()->find($id);
if (!$post) {
return response()->json(['error' => true, 'message' => 'Không tìm thấy bài viết.'], 404);
}
$post->forceDelete();
return response()->json(['error' => false, 'message' => 'Xoá vĩnh viễn bài viết thành công.']);
}
public function bulkRestore(Request $request): JsonResponse
{
$request->validate(['ids' => 'required|array|min:1', 'ids.*' => 'integer']);
$count = Post::onlyTrashed()->whereIn('id', $request->ids)->restore();
$this->revalidation->revalidateDocs();
return response()->json(['error' => false, 'message' => "Đã khôi phục {$count} bài viết."]);
}
public function bulkForceDelete(Request $request): JsonResponse
{
$request->validate(['ids' => 'required|array|min:1', 'ids.*' => 'integer']);
$count = Post::onlyTrashed()->whereIn('id', $request->ids)->forceDelete();
return response()->json(['error' => false, 'message' => "Đã xoá vĩnh viễn {$count} bài viết."]);
}
public function bulkDelete(Request $request): JsonResponse
{
$request->validate(['ids' => 'required|array|min:1', 'ids.*' => 'integer']);
$count = Post::whereIn('id', $request->ids)->delete();
$this->revalidation->revalidateDocs();
return response()->json(['error' => false, 'message' => "Đã xoá {$count} bài viết."]);
}
public function bulkUpdateStatus(Request $request): JsonResponse
{
$request->validate([
'ids' => 'required|array|min:1',
'ids.*' => 'integer',
'status' => 'required|in:draft,published,hidden',
]);
$count = Post::whereIn('id', $request->ids)->update(['status' => $request->status]);
$this->revalidation->revalidateDocs();
return response()->json(['error' => false, 'message' => "Đã cập nhật trạng thái {$count} bài viết."]);
}
public function syncWordpress(Request $request): JsonResponse
{
$validated = $request->validate([