%PDF- %PDF-
Direktori : /var/www/html/diaspora/api_internal/app/Http/Controllers/Api/v1/ |
Current File : /var/www/html/diaspora/api_internal/app/Http/Controllers/Api/v1/CategoriesController.php |
<?php namespace App\Http\Controllers\Api\v1; use App\Http\Controllers\Api\ApiController; use App\Http\Requests\Api\v1\Categories\CreateCategoryRequest; use App\Jobs\SubscribeAllDevicesToCategoryJob; use App\Models\Category; use App\Transformers\CategoryTransformer; use Illuminate\Http\Request; use Illuminate\Pagination\LengthAwarePaginator; class CategoriesController extends ApiController { /** * User $user. */ protected $user; /** * PostsController constructor. */ public function __construct() { $this->user = auth() ->guard('api') ->user(); } /** * @param Request $request * @return CategoriesController */ public function index(Request $request) { /** @var LengthAwarePaginator $result */ $result = $this->filterCategories($request) ->paginate($request->get('perPage')); return $this->withPaginated($result, new CategoryTransformer()); } private function filterCategories(Request $request) { $result = Category::query(); if ($name = $request->get('name')) { $result = $result->whereHas('translations', function ($q) use ($name) { $q->where('name', 'like', "$name%"); $q->where('locale', app()->getLocale()); }); } if ($slug = $request->get('slug')) { $result = $result->where('slug', 'like', "$slug%"); } return $result; } /** * @param $id * @return CategoriesController */ public function show($id) { $category = Category::query() ->findOrFail($id); return $this->item($category, new CategoryTransformer()); } public function store(CreateCategoryRequest $request) { /** @var Category $category */ $category = Category::query() ->create($request->only(['slug', 'name'])); activity() ->causedBy($this->user) ->performedOn($category) ->log('created'); $this->dispatch(new SubscribeAllDevicesToCategoryJob($category)); return $this->item($category, new CategoryTransformer()); } public function update(CreateCategoryRequest $request, $id) { $category = Category::query() ->findOrFail($id); $category->update($request->only(['name'])); activity() ->causedBy($this->user) ->performedOn($category) ->log('updated'); return $this->item($category, new CategoryTransformer()); } public function archive(Category $category) { $category->archive(); activity() ->causedBy($this->user) ->performedOn($category) ->log('archived'); return $this->item($category, new CategoryTransformer()); } public function unArchive(Category $category) { $category->unArchive(); activity() ->causedBy($this->user) ->performedOn($category) ->log('unArchived'); return $this->item($category, new CategoryTransformer()); } public function getAvailableCategories() { return $this->collection(Category::query() ->get(), new CategoryTransformer()); } }