%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/PatientController.php |
<?php namespace App\Http\Controllers\Api\v1; use App\Http\Controllers\Api\ApiController; use App\Http\Controllers\Controller; use App\Http\Requests\Api\v1\Patient\CreatePatientRequest; use App\Http\Requests\Api\v1\Patient\UpdatePatientRequest; use App\Models\Patient; use App\Transformers\PatientTransformer; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class PatientController extends ApiController { /** * @param Request $request * @return \Spatie\Fractal\Fractal */ public function index(Request $request) { $result = $this->filterPatient($request) ->paginate($request->get('perPage')); return $this->withPaginated($result, new PatientTransformer()); } /** * @param Request $request * @return \Illuminate\Database\Eloquent\Builder */ private function filterPatient(Request $request) { $result = Patient::query(); if ($code = $request->get('code')) { $result = $result->where('code', 'like', "$code%"); } if ($name = $request->get('name')) { $result = $result->where('name', 'like', "$name%"); } if ($surname = $request->get('surname')) { $result = $result->where('surname', 'like', "$surname%"); } if ($email = $request->get('email')) { $result = $result->where('email', 'like', "$email%"); } if ($phone = $request->get('phone')) { $result = $result->where('phone', 'like', "$phone%"); } return $result; } /** * @param $id * @return \Illuminate\Http\JsonResponse */ public function show($id) { $patient = Patient::query() ->findOrFail($id); return $this->item($patient, new PatientTransformer()); } /** * @param CreatePatientRequest $request * @return \Illuminate\Http\JsonResponse */ public function store(CreatePatientRequest $request) { DB::beginTransaction(); try { $patient = Patient::query() ->create([ 'name' => $request->get('name'), 'surname' => $request->get('surname'), 'email' => $request->get('email'), 'phone' => $request->get('phone'), 'code' => uniqid(), ]); $patient->hospitals() ->sync($request->get('hospitalIds')); $patient->protocols() ->sync($request->get('protocolIds')); DB::commit(); $patient->patientAddedNotification(); return $this->item($patient, new PatientTransformer); } catch (\Exception $e) { DB::rollBack(); return $this->wrongArguments([ 'message' => $e->getMessage(), ]); } } /** * @param UpdatePatientRequest $request * @param $id * @return \Illuminate\Http\JsonResponse */ public function update(UpdatePatientRequest $request, $id) { DB::beginTransaction(); try { $patient = Patient::query() ->findOrFail($id); $patient->update($request->only(['name', 'surname', 'email', 'phone'])); $patient->hospitals() ->sync($request->get('hospitalIds')); $patient->protocols() ->sync($request->get('protocolIds')); DB::commit(); return $this->item($patient, new PatientTransformer); } catch (\Exception $e) { DB::rollBack(); return $this->wrongArguments([ 'message' => $e->getMessage(), ]); } } }