%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/IcdController.php |
<?php namespace App\Http\Controllers\Api\v1; use App\Http\Controllers\Api\ApiController; use App\Http\Requests\Api\v1\Icd\CreateIcdRequest; use App\Models\Icd; use App\Models\IcdQuestion; use App\Transformers\IcdQuestionTransformer; use App\Transformers\IcdTransformer; use Illuminate\Http\Request; class IcdController extends ApiController { /** * @param Request $request * @return \Spatie\Fractal\Fractal */ public function index(Request $request) { $result = $this->filterIcds($request) ->orderByDesc('created_at') ->paginate($request->get('perPage')); return $this->withPaginated($result, new IcdTransformer()); } /** * @param $id * @return \Illuminate\Http\JsonResponse */ public function show($id) { $result = Icd::query() ->findOrFail($id); return $this->item($result, new IcdTransformer()); } /** * @param Request $request * @return \Illuminate\Database\Eloquent\Builder */ private function filterIcds(Request $request) { $result = Icd::query(); if ($version = $request->get('version')) { $result = $result->where('version', 'like', "$version%"); } return $result; } /** * @param CreateIcdRequest $request * @return \Illuminate\Http\JsonResponse */ public function store(CreateIcdRequest $request) { $icd = Icd::query() ->create([ 'version' => $request->get('version'), 'status' => Icd::DRAFT, ]); return $this->item($icd, new IcdTransformer()); } /** * @param $id * @return \Illuminate\Http\JsonResponse */ public function publish($id) { $icd = Icd::query() ->where('id', $id) ->firstOrFail(); $published = Icd::query() ->where('status', Icd::PUBLISHED) ->first(); if ($published) { $published->expire(); } $icd->publish(); return $this->item($icd, new IcdTransformer()); } /** * @param $id * @return \Illuminate\Http\JsonResponse */ public function getAllQuestions($id) { $questions = IcdQuestion::query() ->where('icd_id', $id) ->get(); return $this->collection($questions, new IcdQuestionTransformer()); } }