%PDF- %PDF-
Direktori : /var/www/html/geotechnics/api/app/Http/Controllers/Api/v1/ |
Current File : /var/www/html/geotechnics/api/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\Http\Requests\Api\v1\Categories\UpdateCategoryRequest; use App\Models\Category; use App\Transformers\CategoryTransformer; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Pagination\LengthAwarePaginator; use Spatie\Fractal\Fractal; class CategoriesController extends ApiController { /** * @param Request $request * @return Fractal */ public function index(Request $request) { /** @var LengthAwarePaginator $result */ $result = Category::query(); if ($name = $request->get('code')) { $result = $result->where('code', 'like', "$name%"); } if ($description = $request->get('description')) { $result = $result->where('description', 'like', "$description%"); } if ($request->get('is_enabled')) { $result = $result->where('is_enabled', true); } if ($request->get('is_disabled')) { $result = $result->where('is_enabled', false); } $result = $result->paginate($request->get('perPage')); return $this->withPaginated($result, new CategoryTransformer()); } /** * @param $id * @return JsonResponse */ public function show($id) { $category = Category::query() ->find($id); return $this->item($category, new CategoryTransformer()); } public function store(CreateCategoryRequest $request) { /** @var Category $category */ $category = Category::query() ->create($request->only(['code', 'description'])); return $this->item($category, new CategoryTransformer()); } /** * @param UpdateCategoryRequest $request * @param $id * @return JsonResponse */ public function update(UpdateCategoryRequest $request, $id) { /** @var Category $category */ $category = Category::query() ->findOrFail($id); $category->update($request->only(['code', 'description'])); return $this->item($category, new CategoryTransformer()); } public function destroy(Category $category) { if (!$category->canDelete()) { return $this->wrongArguments([ 'message' => 'Not possible to delete this category due to services associated!', ]); } try { $category->delete(); } catch (\Exception $e) { return $this->wrongArguments([ 'message' => 'Not possible to delete this category for the moment!', ]); } return []; } public function enable(Category $category) { $category->enable(); return $this->item($category, new CategoryTransformer()); } public function disable(Category $category) { $category->disable(); return $this->item($category, new CategoryTransformer()); } }