67 lines
2.8 KiB
PHP
67 lines
2.8 KiB
PHP
<?php
|
|
|
|
namespace Modules\Linksehat\Transformers\Doctors;
|
|
|
|
use App\Helpers\Helper;
|
|
use App\Models\Organization;
|
|
use Illuminate\Http\Resources\Json\JsonResource;
|
|
use Modules\Linksehat\Transformers\Dashboard\HospitalResource;
|
|
|
|
class DoctorResourceDetail extends JsonResource
|
|
{
|
|
/**
|
|
* Transform the resource into an array.
|
|
*
|
|
* @param \Illuminate\Http\Request
|
|
* @return array
|
|
*/
|
|
public function toArray($request)
|
|
{
|
|
foreach ($this->practices as $practice) {
|
|
$prices[$practice->service_code] = Helper::currencyIdrFormat($practice->price);
|
|
}
|
|
|
|
$award[] = explode("\n", $this->practitioner->meta->award);
|
|
$education[] = explode("\n", $this->practitioner->meta->education);
|
|
|
|
$queryHospitals = Organization::query()
|
|
->without('meta')
|
|
->where('organizations.type', 'hospital')
|
|
->leftJoin('addresses', function ($q) {
|
|
$q->on('organizations.main_address_id', '=', 'addresses.id');
|
|
$q->where('addresses.addressable_type', '=', Organization::class);
|
|
});
|
|
if ($request->has('lat') && !empty($request->lat) && $request->has('lng') && !empty($request->lng)) {
|
|
$queryHospitals = $queryHospitals->selectRaw("organizations.*, addresses.text AS currentAddress, 6371 * acos (cos ( radians($request->lat) ) * cos( radians( addresses.lat ) ) * cos( radians( addresses.lng ) - radians($request->lng) ) + sin ( radians($request->lat) ) * sin( radians( addresses.lat ) )) as distance")->orderBy('distance', 'ASC');
|
|
}
|
|
$queryHospitals = $queryHospitals->orderBy('organizations.name', 'asc')->where('organizations.id', $this->organization_id)->get();
|
|
|
|
return [
|
|
'name' => $this->practitioner->person->full_name,
|
|
'length_of_work_year' => rand(1, 20),
|
|
'price' => $prices,
|
|
'rating' => rand(50, 100),
|
|
'photos' => [
|
|
'title' => 'doctor-avatar-' . $this->practitioner->person->id,
|
|
'url' => asset('images/default-doctor-avatar.png')
|
|
],
|
|
'spesialis' => [
|
|
[
|
|
'name' => 'Spesialis ' . $this->speciality->name,
|
|
'str' => random_int(1000000000000000, 5000000000000000)
|
|
],
|
|
],
|
|
'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,
|
|
'day_available' => $this->day_available
|
|
]
|
|
];
|
|
}
|
|
}
|