%PDF- %PDF-
Direktori : /var/www/html/news/app/Http/Controllers/Api/ |
Current File : /var/www/html/news/app/Http/Controllers/Api/CategoriesController.php |
<?php namespace App\Http\Controllers\Api; use App\Http\Controllers\ApiController; use App\Http\Requests\Category\CategoryStoreRequest; use App\Http\Requests\Category\CategoryUpdateRequest; use App\Http\Requests\Media\UploadImageRequest; use App\Repositories\Category\CategoriesRepository; use App\Repositories\Media\MediaRepository; use App\Transformers\CategoryTransformer; use App\Transformers\MediaTransformer; use EllipseSynergie\ApiResponse\Contracts\Response; use Exception; class CategoriesController extends ApiController { /** * @var CategoriesRepository */ private $categoriesRepository; /** * @var MediaRepository */ private $mediaRepository; /** * UsersController constructor. * @param Response $response * @param CategoriesRepository $categoriesRepository * @param MediaRepository $mediaRepository */ public function __construct(Response $response, CategoriesRepository $categoriesRepository, MediaRepository $mediaRepository) { parent::__construct($response); $this->transformer = new CategoryTransformer; $this->categoriesRepository = $categoriesRepository; $this->mediaRepository = $mediaRepository; } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { return $this->response->withPaginator($this->categoriesRepository->paginate(), $this->transformer); } /** * Store a newly created resource in storage. * * @param CategoryStoreRequest $request * @return \Illuminate\Http\Response */ public function store(CategoryStoreRequest $request) { $category = $this->categoriesRepository->create($request->all()); return $this->response->withItem($category, $this->transformer); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { return $this->response->withItem($this->categoriesRepository->findOrFail($id), $this->transformer); } /** * Update the specified resource in storage. * * @param CategoryUpdateRequest $request * @param int $id * @return \Illuminate\Http\Response */ public function update(CategoryUpdateRequest $request, $id) { $category = $this->categoriesRepository->findOrFail($id); $category->update($request->all()); return $this->response->withItem($category, $this->transformer); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { $category = $this->categoriesRepository->findOrFail($id); $result = $this->categoriesRepository->delete($category->id); if (!$result) { return $this->response->errorInternalError('Unexpected error occurred'); } return response([], 204); } /** * @param UploadImageRequest $request * @param $category * @return mixed */ public function uploadPicture(UploadImageRequest $request, $category) { try { $category = $this->categoriesRepository->findOrFail($category); $directory = public_path() . '/uploads/categories/'; $file_name = $this->mediaRepository->createImage($directory, $request->get('source')); if (!$file_name) { return $this->response->errorWrongArgs('Media source not readable'); } $media = $this->categoriesRepository->changeImage($category, $file_name, $request->get('file_name')); return $this->response->withItem($media, new MediaTransformer); } catch (Exception $e) { return $this->response->errorInternalError($e->getMessage()); } } }