From 4ff3ce971491e2ba841e20feb7cd20195543b5ba Mon Sep 17 00:00:00 2001 From: R Date: Thu, 29 Sep 2022 11:55:51 +0700 Subject: [PATCH] Re Format Doctor Resource --- .../Linksehat/Transformers/DoctorResource.php | 88 +++++++++++++++++-- app/Models/Organization.php | 6 ++ database/seeders/DrugSeeder.php | 3 +- 3 files changed, 90 insertions(+), 7 deletions(-) diff --git a/Modules/Linksehat/Transformers/DoctorResource.php b/Modules/Linksehat/Transformers/DoctorResource.php index bd055db8..9dd06382 100644 --- a/Modules/Linksehat/Transformers/DoctorResource.php +++ b/Modules/Linksehat/Transformers/DoctorResource.php @@ -15,13 +15,69 @@ class DoctorResource extends JsonResource */ public function toArray($request) { - $practices = $this->practitionerRoles->map(function($practitionerRole) { - return [ + // $practices = $this->practitionerRoles->map(function($practitionerRole) { + // return [ + // 'id' => $practitionerRole->id, + // 'doctor_id' => $practitionerRole->practitioner_id, + // 'hospital_id' => $practitionerRole->organization_id, + // 'speciality_id' => $practitionerRole->speciality_id, + // 'hospital' => HospitalResource::make($practitionerRole->organization), + // 'speciality' => SpecialityResource::make($practitionerRole->speciality), + // 'str' => '3121100888826697', + // 'sip' => '73/B.16/31.71.05.1003.01.015.S.2/4/-1.779.3/e/2020', + + // 'is_chat_available' => $practitionerRole->is_chat_available, + // 'is_video_available' => $practitionerRole->is_video_available, + // 'is_walkin_available' => $practitionerRole->is_walkin_available, + // 'is_instant_chat_available' => $practitionerRole->is_instant_chat_available, + // ]; + // }); + + $specialities = []; + $hospitals = []; + $isChatAvailable = false; + $isVideoAvailable = false; + $isWalkinAvailable = false; + $isInstantChatAvailable = false; + + foreach ($this->practitionerRoles as $practitionerRole) { + $specialities[$practitionerRole->speciality_id]['id'] = $practitionerRole->speciality_id; + $specialities[$practitionerRole->speciality_id]['code'] = $practitionerRole->speciality->code; + $specialities[$practitionerRole->speciality_id]['name'] = $practitionerRole->speciality->name; + // $specialities[$practitionerRole->speciality_id]['practices'][] = [ + // 'id' => $practitionerRole->id, + // 'doctor_id' => $practitionerRole->practitioner_id, + // 'hospital_id' => $practitionerRole->organization_id, + // 'speciality_id' => $practitionerRole->speciality_id, + // 'hospital' => HospitalResource::make($practitionerRole->organization), + // 'str' => '3121100888826697', + // 'sip' => '73/B.16/31.71.05.1003.01.015.S.2/4/-1.779.3/e/2020', + + // 'is_chat_available' => $practitionerRole->is_chat_available, + // 'is_video_available' => $practitionerRole->is_video_available, + // 'is_walkin_available' => $practitionerRole->is_walkin_available, + // 'is_instant_chat_available' => $practitionerRole->is_instant_chat_available, + // ]; + + + $hospitals[$practitionerRole->organization_id]['id'] = $practitionerRole->hospital_id; + $hospitals[$practitionerRole->organization_id]['code'] = $practitionerRole->organization->code; + $hospitals[$practitionerRole->organization_id]['name'] = $practitionerRole->organization->name; + $hospitals[$practitionerRole->organization_id]['description'] = $practitionerRole->organization->description; + $hospitals[$practitionerRole->organization_id]['address'] = $practitionerRole->organization->currentAddress->text; + $hospitals[$practitionerRole->organization_id]['lat'] = $practitionerRole->organization->currentAddress->lat; + $hospitals[$practitionerRole->organization_id]['lng'] = $practitionerRole->organization->currentAddress->lng; + $hospitals[$practitionerRole->organization_id]['distance'] = $practitionerRole->organization->currentAddress->distance ?? null; + $hospitals[$practitionerRole->organization_id]['city_name'] = $practitionerRole->organization->currentAddress->city->name ?? null; + $hospitals[$practitionerRole->organization_id]['rating'] = (rand(350, 500) / 100); + $hospitals[$practitionerRole->organization_id]['phone'] = $practitionerRole->organization->meta->phone; + $hospitals[$practitionerRole->organization_id]['photo_url'] = asset('images/default-hospital-image.png'); + + $hospitals[$practitionerRole->organization_id]['practices'][] = [ 'id' => $practitionerRole->id, 'doctor_id' => $practitionerRole->practitioner_id, 'hospital_id' => $practitionerRole->organization_id, 'speciality_id' => $practitionerRole->speciality_id, - 'hospital' => HospitalResource::make($practitionerRole->organization), 'speciality' => SpecialityResource::make($practitionerRole->speciality), 'str' => '3121100888826697', 'sip' => '73/B.16/31.71.05.1003.01.015.S.2/4/-1.779.3/e/2020', @@ -31,8 +87,21 @@ class DoctorResource extends JsonResource 'is_walkin_available' => $practitionerRole->is_walkin_available, 'is_instant_chat_available' => $practitionerRole->is_instant_chat_available, ]; - }); - + + 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; + } + } + return [ 'id' => $this->id, 'full_name' => $this->person->full_name ?? null, @@ -54,8 +123,15 @@ class DoctorResource extends JsonResource 'keilmuan' => $this->meta->keilmuan ?? '', 'length_of_work_year' => rand(1, 10), 'description' => $this->meta->description ?? '', - 'practices' => $practices, + // 'practices' => $practices, 'rating' => rand(88, 100), + 'specialities' => $specialities, + 'hospitals' => $hospitals, + + 'is_has_chat_available' => $isChatAvailable, + 'is_has_video_available' => $isVideoAvailable, + 'is_has_walkin_available' => $isWalkinAvailable, + 'is_has_instant_chat_available' => $isInstantChatAvailable, ]; } } diff --git a/app/Models/Organization.php b/app/Models/Organization.php index 496c02cf..2e1c6fbe 100644 --- a/app/Models/Organization.php +++ b/app/Models/Organization.php @@ -4,6 +4,7 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Str; class Organization extends Model { @@ -26,6 +27,11 @@ class Organization extends Model public $appends = [ 'meta' ]; + + public function setCodeAttribute($value) + { + $this->attributes['code'] = !empty($value) ? $value : Str::upper(Str::random('6')); + } public function getMetaAttribute() { diff --git a/database/seeders/DrugSeeder.php b/database/seeders/DrugSeeder.php index 9ff425f2..9f913dee 100644 --- a/database/seeders/DrugSeeder.php +++ b/database/seeders/DrugSeeder.php @@ -73,7 +73,8 @@ class DrugSeeder extends Seeder 'name' => $row_data['pabrikan'] ], [ 'name' => $row_data['pabrikan'], - 'type' => 'manufacturer' + 'type' => 'manufacturer', + 'code' => $row_data['pabrikan'] ]); if (in_array($row_data['golongan'], ['VITAMINS & MINERALS', 'NUTRITIONS'])) {