%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/klinisol/klinisol-api/app/Http/Controllers/Api/v1/
Upload File :
Create Path :
Current File : /var/www/html/klinisol/klinisol-api/app/Http/Controllers/Api/v1/QuestionController.php

<?php

namespace App\Http\Controllers\Api\v1;

use App\Http\Controllers\Api\ApiController;
use App\Http\Requests\Api\v1\Question\CreateQuestionRequest;
use App\Http\Requests\Api\v1\Question\UpdateQuestionRequest;
use App\Models\Question;
use App\Transformers\QuestionTransformer;
use Illuminate\Http\Request;

class QuestionController extends ApiController
{
    /**
     * @param Request $request
     * @return \Spatie\Fractal\Fractal
     */
    public function index(Request $request)
    {
        $result = $this->filterQuestions($request)
                       ->paginate($request->get('perPage'));
        return $this->withPaginated($result, new QuestionTransformer());
    }

    /**
     * @param Request $request
     * @return \Illuminate\Database\Eloquent\Builder
     */
    private function filterQuestions(Request $request)
    {
        $result = Question::query();
        if ($type = $request->get('type')) {
            $result = $result->where('type', 'like', "$type%");
        }
        if ($name = $request->get('question')) {
            $result = $result->where('question', 'like', "$name%");
        }

        return $result;
    }

    /**
     * @param $id
     * @return \Illuminate\Http\JsonResponse
     */
    public function show($id)
    {
        $item = Question::query()
                        ->findOrFail($id);
        return $this->item($item, new QuestionTransformer());
    }

    /**
     * @param CreateQuestionRequest $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function store(CreateQuestionRequest $request)
    {
        $question = Question::query()
                            ->create([
                                'protocol_id'     => $request->get('protocol_id'),
                                'type'            => $request->get('type'),
                                'question'        => $request->get('question'),
                                'has_na'          => $request->get('has_na'),
                                'has_extra_field' => $request->get('has_extra_field'),
                                'extra_field'     => $request->get('extra_field'),
                            ]);
        return $this->item($question, new QuestionTransformer());
    }

    /**
     * @param UpdateQuestionRequest $request
     * @param $id
     * @return \Illuminate\Http\JsonResponse
     */
    public function update(UpdateQuestionRequest $request, $id)
    {
        $item = Question::query()
                        ->findOrFail($id);
        $item->update($request->only([
            'question',
            'has_na',
            'has_extra_field',
            'extra_field',
        ]));
        return $this->item($item, new QuestionTransformer());
    }

    /**
     * @param $id
     * @return \Illuminate\Http\JsonResponse
     * @throws \Exception
     */
    public function destroy($id)
    {
        $item = Question::query()
                        ->findOrFail($id);
        $item->delete();
        return $this->item($item, new QuestionTransformer());
    }
}

Zerion Mini Shell 1.0