From 1bcf2d8ceea8a1b54392b1bf90293bdca838a07b Mon Sep 17 00:00:00 2001 From: Muhammad Fajar Date: Fri, 4 Nov 2022 11:05:31 +0700 Subject: [PATCH] fix doctor detail resource --- .../Http/Controllers/Api/DoctorController.php | 5 +- .../Doctor/DoctorResourceDetail.php | 49 +++++++++++++------ 2 files changed, 35 insertions(+), 19 deletions(-) diff --git a/Modules/Linksehat/Http/Controllers/Api/DoctorController.php b/Modules/Linksehat/Http/Controllers/Api/DoctorController.php index ab749700..9adc46db 100755 --- a/Modules/Linksehat/Http/Controllers/Api/DoctorController.php +++ b/Modules/Linksehat/Http/Controllers/Api/DoctorController.php @@ -4,14 +4,13 @@ namespace Modules\Linksehat\Http\Controllers\Api; use App\Helpers\Helper; use App\Models\Organization; -use App\Models\Practice; use App\Models\Practitioner; use App\Models\PractitionerRole; use Illuminate\Contracts\Support\Renderable; use Illuminate\Http\Request; use Illuminate\Routing\Controller; use Illuminate\Support\Facades\DB; -use Modules\Linksehat\Transformers\DoctorResource; +use Modules\Linksehat\Transformers\Doctor\DoctorResourceDetail; use Modules\Linksehat\Transformers\PractitionerRoleToDoctorResource; class DoctorController extends Controller @@ -108,7 +107,7 @@ class DoctorController extends Controller ]) ->findOrFail($id); - return response()->json(DoctorResource::make($doctor)); + return response()->json(DoctorResourceDetail::make($doctor)); } /** diff --git a/Modules/Linksehat/Transformers/Doctor/DoctorResourceDetail.php b/Modules/Linksehat/Transformers/Doctor/DoctorResourceDetail.php index 41d2db54..83fb48e4 100755 --- a/Modules/Linksehat/Transformers/Doctor/DoctorResourceDetail.php +++ b/Modules/Linksehat/Transformers/Doctor/DoctorResourceDetail.php @@ -17,12 +17,34 @@ class DoctorResourceDetail extends JsonResource */ public function toArray($request) { - foreach ($this->practices as $practice) { - $prices[$practice->service_code] = !empty($practice->price) ? Helper::currencyIdrFormat($practice->price) : '-'; + foreach ($this->practitionerRoles as $practitionerRole) { + foreach ($practitionerRole->practices as $practice) { + foreach ($practice->prices as $price) { + $prices[$practice->service_code] = !empty($price->price_net) ? Helper::currencyIdrFormat($price->price_net) : '-'; + } + } + + // Spesialis + $spesialis[$practitionerRole->speciality_id]['id'] = $practitionerRole->speciality->id; + $spesialis[$practitionerRole->speciality_id]['name'] = $practitionerRole->speciality->name; + $spesialis[$practitionerRole->speciality_id]['str'] = random_int(1000000000000000, 5000000000000000); + + if ($practitionerRole->is_chat_available) { + $isChatAvailable = true; + } + if ($practitionerRole->is_video_available) { + $isVideoAvailable = true; + } + if ($practitionerRole->is_walkin_available) { + $isWalkinAvailable = true; + } + if ($practitionerRole->is_instant_chat_available) { + $isInstantChatAvailable = true; + } } - $award[] = explode("\n", $this->practitioner->meta->award); - $education[] = explode("\n", $this->practitioner->meta->education); + $award[] = explode("\n", $this->meta->award); + $education[] = explode("\n", $this->meta->education); $queryHospitals = Organization::query() ->without('meta') @@ -37,28 +59,23 @@ class DoctorResourceDetail extends JsonResource $queryHospitals = $queryHospitals->orderBy('organizations.name', 'asc')->where('organizations.id', $this->organization_id)->get(); return [ - 'name' => $this->practitioner->person->full_name, + 'name' => $this->person->full_name, 'length_of_work_year' => rand(1, 20), 'price' => $prices, 'rating' => rand(50, 100), 'photos' => [ - 'title' => 'doctor-avatar-' . $this->practitioner->person->id, + 'title' => 'doctor-avatar-' . $this->person->id, 'url' => asset('images/default-doctor-avatar.png') ], - 'spesialis' => [ - [ - 'name' => 'Spesialis ' . $this->speciality->name, - 'str' => random_int(1000000000000000, 5000000000000000) - ], - ], + 'spesialis' => $spesialis, 'award' => $award, 'education' => $education, 'location_practect' => HospitalResource::collection($queryHospitals), 'available' => [ - 'is_chat_available' => $this->is_chat_available, - 'is_video_available' => $this->is_video_available, - 'is_walkin_available' => $this->is_walkin_available, - 'is_instant_chat_available' => $this->is_instant_chat_available, + 'is_chat_available' => $isChatAvailable, + 'is_video_available' => $isVideoAvailable, + 'is_walkin_available' => $isWalkinAvailable, + 'is_instant_chat_available' => $isInstantChatAvailable, 'day_available' => $this->day_available ] ];