fix doctor detail resource

This commit is contained in:
Muhammad Fajar
2022-11-04 11:05:31 +07:00
parent f35cec3c85
commit 1bcf2d8cee
2 changed files with 35 additions and 19 deletions

View File

@@ -4,14 +4,13 @@ namespace Modules\Linksehat\Http\Controllers\Api;
use App\Helpers\Helper; use App\Helpers\Helper;
use App\Models\Organization; use App\Models\Organization;
use App\Models\Practice;
use App\Models\Practitioner; use App\Models\Practitioner;
use App\Models\PractitionerRole; use App\Models\PractitionerRole;
use Illuminate\Contracts\Support\Renderable; use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Routing\Controller; use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Modules\Linksehat\Transformers\DoctorResource; use Modules\Linksehat\Transformers\Doctor\DoctorResourceDetail;
use Modules\Linksehat\Transformers\PractitionerRoleToDoctorResource; use Modules\Linksehat\Transformers\PractitionerRoleToDoctorResource;
class DoctorController extends Controller class DoctorController extends Controller
@@ -108,7 +107,7 @@ class DoctorController extends Controller
]) ])
->findOrFail($id); ->findOrFail($id);
return response()->json(DoctorResource::make($doctor)); return response()->json(DoctorResourceDetail::make($doctor));
} }
/** /**

View File

@@ -17,12 +17,34 @@ class DoctorResourceDetail extends JsonResource
*/ */
public function toArray($request) public function toArray($request)
{ {
foreach ($this->practices as $practice) { foreach ($this->practitionerRoles as $practitionerRole) {
$prices[$practice->service_code] = !empty($practice->price) ? Helper::currencyIdrFormat($practice->price) : '-'; 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); $award[] = explode("\n", $this->meta->award);
$education[] = explode("\n", $this->practitioner->meta->education); $education[] = explode("\n", $this->meta->education);
$queryHospitals = Organization::query() $queryHospitals = Organization::query()
->without('meta') ->without('meta')
@@ -37,28 +59,23 @@ class DoctorResourceDetail extends JsonResource
$queryHospitals = $queryHospitals->orderBy('organizations.name', 'asc')->where('organizations.id', $this->organization_id)->get(); $queryHospitals = $queryHospitals->orderBy('organizations.name', 'asc')->where('organizations.id', $this->organization_id)->get();
return [ return [
'name' => $this->practitioner->person->full_name, 'name' => $this->person->full_name,
'length_of_work_year' => rand(1, 20), 'length_of_work_year' => rand(1, 20),
'price' => $prices, 'price' => $prices,
'rating' => rand(50, 100), 'rating' => rand(50, 100),
'photos' => [ 'photos' => [
'title' => 'doctor-avatar-' . $this->practitioner->person->id, 'title' => 'doctor-avatar-' . $this->person->id,
'url' => asset('images/default-doctor-avatar.png') 'url' => asset('images/default-doctor-avatar.png')
], ],
'spesialis' => [ 'spesialis' => $spesialis,
[
'name' => 'Spesialis ' . $this->speciality->name,
'str' => random_int(1000000000000000, 5000000000000000)
],
],
'award' => $award, 'award' => $award,
'education' => $education, 'education' => $education,
'location_practect' => HospitalResource::collection($queryHospitals), 'location_practect' => HospitalResource::collection($queryHospitals),
'available' => [ 'available' => [
'is_chat_available' => $this->is_chat_available, 'is_chat_available' => $isChatAvailable,
'is_video_available' => $this->is_video_available, 'is_video_available' => $isVideoAvailable,
'is_walkin_available' => $this->is_walkin_available, 'is_walkin_available' => $isWalkinAvailable,
'is_instant_chat_available' => $this->is_instant_chat_available, 'is_instant_chat_available' => $isInstantChatAvailable,
'day_available' => $this->day_available 'day_available' => $this->day_available
] ]
]; ];