From 42216239721289a582ec55374cc35868b80e2235 Mon Sep 17 00:00:00 2001 From: "David H. Sianturi" Date: Fri, 23 Feb 2018 22:11:18 +0700 Subject: [PATCH] filter doctors by speciality or search --- app/Filters/DoctorFilters.php | 8 +-- .../Controllers/Doctors/DoctorController.php | 28 +++++++++- app/Http/Requests/DoctorRequest.php | 2 +- resources/views/doctors/index.blade.php | 42 ++++++++++++++ resources/views/explore.blade.php | 55 ------------------- .../views/partials/master/navbar.blade.php | 7 +-- routes/web.php | 9 ++- 7 files changed, 82 insertions(+), 69 deletions(-) create mode 100644 resources/views/doctors/index.blade.php delete mode 100644 resources/views/explore.blade.php diff --git a/app/Filters/DoctorFilters.php b/app/Filters/DoctorFilters.php index 6432a37..46637d3 100644 --- a/app/Filters/DoctorFilters.php +++ b/app/Filters/DoctorFilters.php @@ -4,12 +4,10 @@ class DoctorFilters extends Filters { - protected $filters = ['polyclinic']; + protected $filters = ['name']; - protected function polyclinic($polyclinic) + protected function name($full_name) { - return $this->builder->whereHas('polyclinic', function ($query) use ($polyclinic) { - $query->where('name', $polyclinic); - }); + return $this->builder->where('full_name', 'LIKE', "%$full_name%"); } } diff --git a/app/Http/Controllers/Doctors/DoctorController.php b/app/Http/Controllers/Doctors/DoctorController.php index 7d9e5a3..4ad13e8 100644 --- a/app/Http/Controllers/Doctors/DoctorController.php +++ b/app/Http/Controllers/Doctors/DoctorController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Doctors; use App\Models\Doctor\Doctor; +use App\Filters\DoctorFilters; use App\Http\Controllers\Controller; use App\Http\Requests\DoctorRequest; use Illuminate\Support\Facades\Auth; @@ -12,7 +13,21 @@ class DoctorController extends Controller { public function __construct() { - $this->middleware(['role:doctor']); + $this->middleware(['role:doctor'])->except(['index', 'show']); + } + + public function index(Speciality $speciality, DoctorFilters $filters) + { + $doctors = $this->getDoctors($speciality, $filters); + + $specialities = Speciality::all(); + + return view('doctors.index', compact('doctors', 'specialities')); + } + + public function show(Speciality $speciality, Doctor $doctor) + { + return view('doctors.show', compact('doctor')); } public function edit() @@ -38,4 +53,15 @@ public function update(DoctorRequest $request, Doctor $doctor) return redirect()->back(); } + + protected function getDoctors(Speciality $speciality, DoctorFilters $filters) + { + $doctors = Doctor::with('speciality', 'group')->latest()->filter($filters); + + if ($speciality->exists) { + $doctors->where('speciality_id', $speciality->id); + } + + return $doctors->paginate(12); + } } diff --git a/app/Http/Requests/DoctorRequest.php b/app/Http/Requests/DoctorRequest.php index 4d08192..86faf92 100644 --- a/app/Http/Requests/DoctorRequest.php +++ b/app/Http/Requests/DoctorRequest.php @@ -14,7 +14,7 @@ public function authorize() public function rules() { return [ - 'speciality_id' => 'required', + 'speciality_id' => 'required|exists:specialities,id', 'full_name' => 'required|string|max:255', 'years_of_experience' => 'required|numeric', 'qualification' => 'required|string|max:25', diff --git a/resources/views/doctors/index.blade.php b/resources/views/doctors/index.blade.php new file mode 100644 index 0000000..190899d --- /dev/null +++ b/resources/views/doctors/index.blade.php @@ -0,0 +1,42 @@ +@extends('layouts.master') + +@section('title', 'All doctors') + +@section('content') + + +
+
+ + @forelse ($doctors as $doctor) + + @empty +
+

There are no relevant results at this time

+
+ @endforelse + + {{ $doctors->links('vendor.pagination.bootstrap-4') }} + +
+
+@endsection \ No newline at end of file diff --git a/resources/views/explore.blade.php b/resources/views/explore.blade.php deleted file mode 100644 index fa7ab4f..0000000 --- a/resources/views/explore.blade.php +++ /dev/null @@ -1,55 +0,0 @@ -@extends('layouts.master') - -@section('title', 'Explore') -@section('explore', 'active') - -@section('content') - -
-
-
-

- Healthcare Provider -


- - @forelse ($groups as $group) - -

- {{ $group->name }} -

-
-

{{ $group->address }}, {{ $group->city }}.

-
- @empty -

Empty healthcare provider

- @endforelse -
- -
-

- Doctors -


- - @forelse ($doctors as $doctor) -
- avatar -

- - {{ $doctor->full_name }} - - {{ $doctor->speciality->name }} -

-
- @empty -

Doctors empty

- @endforelse -
-
-
-@endsection \ No newline at end of file diff --git a/resources/views/partials/master/navbar.blade.php b/resources/views/partials/master/navbar.blade.php index f71b623..6d15ecd 100644 --- a/resources/views/partials/master/navbar.blade.php +++ b/resources/views/partials/master/navbar.blade.php @@ -1,15 +1,12 @@