%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/IcdQuestionController.php

<?php

namespace App\Http\Controllers\Api\v1;

use App\Http\Controllers\Api\ApiController;
use App\Http\Requests\Api\v1\Icd\CreateIcdRequest;
use App\Http\Requests\Api\v1\IcdQuestion\CreateIcdQuestionRequest;
use App\Http\Requests\Api\v1\IcdQuestion\UpdateIcdQuestionRequest;
use App\Models\Icd;
use App\Models\IcdQuestion;
use App\Transformers\IcdQuestionTransformer;
use App\Transformers\IcdTransformer;
use Illuminate\Http\Request;

class IcdQuestionController 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 IcdQuestionTransformer());
    }

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

        return $result;
    }

    /**
     * @param CreateIcdQuestionRequest $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function store(CreateIcdQuestionRequest $request)
    {
        $question = IcdQuestion::query()
                               ->create([
                                   'icd_id'          => $request->get('icd_id'),
                                   '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 IcdQuestionTransformer());
    }

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

Zerion Mini Shell 1.0