include trashed pages functionality added

master
Константин 2023-11-19 14:38:18 +03:00
parent 49d8143062
commit bed081881f
2 changed files with 12 additions and 7 deletions

View File

@ -34,6 +34,7 @@ class PagesController extends Controller {
public function index(Request $request): JsonResponse { public function index(Request $request): JsonResponse {
$filters = collect($request->has('filters') ? json_decode($request->get('filters'), true) : [])->filter(function($val) {return $val;}); $filters = collect($request->has('filters') ? json_decode($request->get('filters'), true) : [])->filter(function($val) {return $val;});
$query = $this->model->query(); $query = $this->model->query();
if ($request->get('with_trashed')) $query->withTrashed();
$service = FiltersService::getService('pages'); $service = FiltersService::getService('pages');
$service->applyFilters($query, $filters); $service->applyFilters($query, $filters);
$paginator = $query->paginate(config('app.pagination_limit')); $paginator = $query->paginate(config('app.pagination_limit'));
@ -41,8 +42,10 @@ class PagesController extends Controller {
} }
public function show(Request $request, $id): JsonResponse { public function show(Request $request, $id): JsonResponse {
$model = $this->model->byUuid($id)->firstOrFail(); $query = $this->model->byUuid($id);
return fractal($model, new PageTransformer())->respond(); if ($request->get('with_trashed')) $query->withTrashed();
$model = $query->firstOrFail();
return fractal($model, new PageTransformer($request->get('with_trashed')))->respond();
} }
public function move(Request $request, $id): JsonResponse { public function move(Request $request, $id): JsonResponse {

View File

@ -14,6 +14,12 @@ use League\Fractal\Resource\Primitive;
use League\Fractal\TransformerAbstract; use League\Fractal\TransformerAbstract;
class PageTransformer extends TransformerAbstract { class PageTransformer extends TransformerAbstract {
public bool $withTrashed = false;
public function __construct(bool $withTrashed = false) {
$this->withTrashed = $withTrashed;
}
protected array $defaultIncludes = [ protected array $defaultIncludes = [
]; ];
@ -43,11 +49,7 @@ class PageTransformer extends TransformerAbstract {
} }
public function includeChildren(Page $model): Collection { public function includeChildren(Page $model): Collection {
return $this->collection($model->children, new PageTransformer()); return $this->collection($this->withTrashed ? $model->children()->withTrashed()->get() : $model->children, new PageTransformer($this->withTrashed));
}
public function includeChildrenWithTrashed(Page $model): Collection {
return $this->collection($model->children()->withTrashed()->get, new PageTransformer());
} }
public function includeParent(Page $model): ?Item { public function includeParent(Page $model): ?Item {