%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/news/app/Http/Controllers/Api/
Upload File :
Create Path :
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);
    }

}

Zerion Mini Shell 1.0