%PDF- %PDF-
Direktori : /var/www/html/klinisol/klinisol-api/app/Http/Controllers/Api/v1/ |
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()); } }