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\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));
}
/**

View File

@@ -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
]
];