From 2b93a5a83042a9a07bacbd43edc63b412ee166ed Mon Sep 17 00:00:00 2001 From: R Date: Sat, 17 Sep 2022 07:56:07 +0700 Subject: [PATCH] Add Doctor Organization Filter --- .../Http/Controllers/Api/DoctorController.php | 14 ++++++++--- .../PractitionerRoleToDoctorResource.php | 23 ++++++++++++++++++- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/Modules/Linksehat/Http/Controllers/Api/DoctorController.php b/Modules/Linksehat/Http/Controllers/Api/DoctorController.php index 83b2ba7c..23af68c5 100644 --- a/Modules/Linksehat/Http/Controllers/Api/DoctorController.php +++ b/Modules/Linksehat/Http/Controllers/Api/DoctorController.php @@ -19,19 +19,27 @@ class DoctorController extends Controller */ public function index(Request $request) { - $hospitals = PractitionerRole::query() + $doctors = PractitionerRole::query() ->with(['practitioner.person', 'speciality', 'practitioner.metas', 'metas', 'organization']) ->when($request->search ?? null, function($query, $search) { $query->whereHas('practitioner.person', function($person) use ($search) { $person->where('name', 'LIKE', '%'.$search.'%'); }); }) - ->paginate(6); + ->whereHas('speciality'); + if ($request->has('hospital_id_in')) { + $hospital_ids = explode(',', $request->hospital_id_in); + $doctors->whereIn('organization_id', $hospital_ids); + } else if ($request->has('hospital_id')) { + $doctors->where('organization_id', $request->hospital_id); + } + + $doctors = $doctors->paginate(6); return response()->json([ 'message' => 'Sukses mengambil data Dokter', - 'doctors' => Helper::paginateResources(PractitionerRoleToDoctorResource::collection($hospitals)) + 'doctors' => Helper::paginateResources(PractitionerRoleToDoctorResource::collection($doctors)) ]); } diff --git a/Modules/Linksehat/Transformers/PractitionerRoleToDoctorResource.php b/Modules/Linksehat/Transformers/PractitionerRoleToDoctorResource.php index 52b72669..a4902f33 100644 --- a/Modules/Linksehat/Transformers/PractitionerRoleToDoctorResource.php +++ b/Modules/Linksehat/Transformers/PractitionerRoleToDoctorResource.php @@ -14,19 +14,40 @@ class PractitionerRoleToDoctorResource extends JsonResource */ public function toArray($request) { + $organization = [ + 'id' => $this->organization->id, + 'name' => $this->organization->name, + 'code' => $this->organization->code, + 'description' => $this->organization->description, + 'address' => $this->organization->currentAddress->text ?? null, + 'lat' => $this->organization->currentAddress->lat ?? null, + 'lng' => $this->organization->currentAddress->lng ?? null, + 'distance' => '200 m', + 'city_name' => 'Kota Tangerang', + ]; + + $speciality = $this->speciality ? [ + 'id' => $this->speciality->id ?? null, + 'name' => $this->speciality->name ?? null, + 'code' => $this->speciality->code ?? null, + ] : null; + return [ 'id' => $this->id, + 'organization_id' => $this->organization_id, 'full_name' => $this->practitioner->person->full_name, 'name_prefix' => $this->practitioner->person->name_prefix, 'name' => $this->practitioner->person->name, 'name_suffix' => $this->practitioner->person->name_suffix, 'gender' => $this->practitioner->person->gender, - 'speciality_name' => !empty($this->speciality->name ?? null) ? 'Spesialis '. $this->speciality->name : 'Spesialis Empty', + // 'speciality_name' => !empty($this->speciality->name ?? null) ? 'Spesialis '. $this->speciality->name : 'Spesialis Empty', 'is_online' => false, 'price_range' => 'Rp 100.000 - Rp 350.000', 'price_start' => '100000', 'price_end' => '350000', 'avatar_url' => asset('images/default-doctor-avatar.png'), + 'organization' => $organization, + 'speciality' => $speciality, ]; return parent::toArray($request); }