Update Doctors

This commit is contained in:
R
2022-09-20 10:57:10 +07:00
parent 07bfbaefe0
commit d187b9331d
7 changed files with 88 additions and 14 deletions

View File

@@ -8,6 +8,7 @@ use App\Models\PractitionerRole;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Modules\Linksehat\Transformers\DoctorResource;
use Modules\Linksehat\Transformers\PractitionerRoleToDoctorDetailResource;
use Modules\Linksehat\Transformers\PractitionerRoleToDoctorResource;
@@ -33,9 +34,13 @@ class DoctorController extends Controller
} else if ($request->has('hospital_id')) {
$doctors->where('organization_id', $request->hospital_id);
}
$doctors = $doctors->paginate(6);
$limit = $request->limit ?? 6;
if ($limit > 20) {
$limit = 20;
}
$doctors = $doctors->paginate($limit);
return response()->json([
'message' => 'Sukses mengambil data Dokter',
@@ -69,12 +74,18 @@ class DoctorController extends Controller
*/
public function show($id)
{
$doctor = PractitionerRole::query()
->with(['practitioner', 'practitioner.person', 'speciality', 'practitioner.metas', 'metas', 'organization'])
->where('id', $id)
->firstOrFail();
return response()->json(PractitionerRoleToDoctorDetailResource::make($doctor));
$doctor = Practitioner::query()
->with([
'practitionerRoles',
'practitionerRoles.metas',
'practitionerRoles.speciality',
'practitionerRoles.organization',
'person',
'metas',
])
->findOrFail($id);
return response()->json(DoctorResource::make($doctor));
}
/**

View File

@@ -57,8 +57,13 @@ class HospitalController extends Controller
// break;
// }
// }
$limit = $request->limit ?? 6;
if ($limit > 20) {
$limit = 20;
}
$hospitals = $hospitals->paginate($request->limit ?? 6);
$hospitals = $hospitals->paginate($limit);
// dd($hospitals->toArray());

View File

@@ -14,6 +14,38 @@ class DoctorResource extends JsonResource
*/
public function toArray($request)
{
return parent::toArray($request);
$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)
];
});
return [
'id' => $this->id,
'full_name' => $this->person->full_name ?? null,
'name_prefix' => $this->person->name_prefix ?? null,
'name' => $this->person->name ?? null,
'name_suffix' => $this->person->name_suffix ?? null,
'gender' => $this->person->gender ?? null,
// 'speciality_name' => !empty($this->speciality->name ?? null) ? 'Spesialis '. $this->speciality->name : 'Spesialis Empty',
'is_online' => false,
// 'is_insurance_covered' => rand(0,1) == 1,
// 'price_range' => 'Rp 100.000 - Rp 350.000',
// 'price_start' => '100000',
// 'price_end' => '350000',
'avatar_url' => asset('images/default-doctor-avatar.png'),
'education' => $this->meta->education ?? '',
'medical_treatment' => $this->meta->medical_treatment ?? '',
'award' => $this->meta->award ?? '',
'work_experience' => $this->meta->work_experience ?? '',
'keilmuan' => $this->meta->keilmuan ?? '',
'description' => $this->meta->description ?? '',
'practices' => $practices
];
}
}

View File

@@ -23,6 +23,7 @@ class PractitionerRoleToDoctorDetailResource extends JsonResource
'gender' => $this->practitioner->person->gender ?? null,
'speciality_name' => !empty($this->speciality->name ?? null) ? 'Spesialis '. $this->speciality->name : 'Spesialis Empty',
'is_online' => false,
'is_insurance_covered' => rand(0,1) == 1,
'price_range' => 'Rp 100.000 - Rp 350.000',
'price_start' => '100000',
'price_end' => '350000',
@@ -32,7 +33,7 @@ class PractitionerRoleToDoctorDetailResource extends JsonResource
'award' => $this->meta->award ?? '',
'work_experience' => $this->meta->work_experience ?? '',
'keilmuan' => $this->meta->keilmuan ?? '',
'description' => $this->meta->description ?? ''
'description' => $this->meta->description ?? '',
];
return parent::toArray($request);

View File

@@ -33,7 +33,7 @@ class PractitionerRoleToDoctorResource extends JsonResource
] : null;
return [
'id' => $this->id,
'id' => $this->practitioner->id,
'organization_id' => $this->organization_id,
'full_name' => $this->practitioner->person->full_name,
'name_prefix' => $this->practitioner->person->name_prefix,
@@ -42,11 +42,12 @@ class PractitionerRoleToDoctorResource extends JsonResource
'gender' => $this->practitioner->person->gender,
// 'speciality_name' => !empty($this->speciality->name ?? null) ? 'Spesialis '. $this->speciality->name : 'Spesialis Empty',
'is_online' => false,
'is_insurance_covered' => rand(0,1) == 1,
'price_range' => 'Rp 100.000 - Rp 350.000',
'price_start' => '100000',
'price_end' => '350000',
'avatar_url' => asset('images/default-doctor-avatar.png'),
'organization' => $organization,
'hospital' => $organization,
'speciality' => $speciality,
];
return parent::toArray($request);

View File

@@ -0,0 +1,19 @@
<?php
namespace Modules\Linksehat\Transformers;
use Illuminate\Http\Resources\Json\JsonResource;
class SpecialityResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request
* @return array
*/
public function toArray($request)
{
return parent::toArray($request);
}
}

View File

@@ -36,4 +36,9 @@ class Practitioner extends Model
{
return $this->morphMany(Meta::class, 'metaable');
}
public function practitionerRoles()
{
return $this->hasMany(PractitionerRole::class, 'practitioner_id');
}
}