%PDF- %PDF-
Direktori : /var/www/html/news/app/Http/Controllers/Api/ |
Current File : /var/www/html/news/app/Http/Controllers/Api/ArticlesController.php |
<?php namespace App\Http\Controllers\Api; use App\Http\Controllers\ApiController; use App\Http\Requests\Article\ArticleStoreRequest; use App\Http\Requests\Article\ArticleUpdateRequest; use App\Repositories\Article\ArticlesRepository; use App\Transformers\ArticleTransformer; use EllipseSynergie\ApiResponse\Contracts\Response; use Illuminate\Http\Request; class ArticlesController extends ApiController { /** * @var ArticleTransformer */ private $transformer; /** * @var ArticlesRepository */ private $articlesRepository; /** * ArticlesController constructor. * @param Response $response * @param ArticleTransformer $transformer * @param ArticlesRepository $articlesRepository */ public function __construct(Response $response, ArticleTransformer $transformer, ArticlesRepository $articlesRepository) { parent::__construct($response); $this->transformer = $transformer; $this->articlesRepository = $articlesRepository; } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { return $this->response->withPaginator($this->articlesRepository->paginate(), $this->transformer); } /** * @param ArticleStoreRequest $request * @return mixed */ public function store(ArticleStoreRequest $request) { $article = $this->articlesRepository->create($request->all()); return $this->response->withItem($article, $this->transformer); } /** * Display the specified resource. * * @param Request $request * @param int $id * @return \Illuminate\Http\Response */ public function show(Request $request, $id) { $article = $this->articlesRepository->findOrFail($id); if (!$request->get('is_admin')) { $article->number_of_views = $article->number_of_views + 1; $article->save(); } return $this->response->withItem($article, $this->transformer); } /** * @param ArticleUpdateRequest $request * @param $id * @return mixed */ public function update(ArticleUpdateRequest $request, $id) { $article = $this->articlesRepository->findOrFail($id); if($article->creator_id !== $request->get('creator_id')) { return $this->response->errorWrongArgs('Can not change the creator'); } $article->update([ 'id' => $request->get('id'), 'title' => $request->get('title'), 'description' => $request->get('description'), 'content' => $request->get('content'), 'last_modifier_id' => $request->get('last_modifier_id'), 'category_id' => $request->get('category_id'), 'is_featured' => $request->get('is_featured'), ]); return $this->response->withItem($article, $this->transformer); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { $article = $this->articlesRepository->findOrFail($id); $result = $this->articlesRepository->delete($article->id); if (!$result) { return $this->response->errorInternalError('Unexpected error occurred'); } return response([], 204); } }