Files
aso/Modules/Linksehat/Transformers/Appointment/AppointmentDetailResource.php
2022-11-07 17:03:39 +07:00

60 lines
2.0 KiB
PHP
Executable File

<?php
namespace Modules\Linksehat\Transformers\Appointment;
use App\Models\Person;
use App\Models\PractitionerRole;
use Carbon\Carbon;
use Illuminate\Http\Resources\Json\JsonResource;
class AppointmentDetailResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request
* @return array
*/
public function toArray($request)
{
foreach ($this->appointmentParticipants as $appoinmentParticipant) {
if ($appoinmentParticipant->participantable_type == Person::class) {
$patiendId = $appoinmentParticipant->participantable_id;
} elseif ($appoinmentParticipant->participantable_type == PractitionerRole::class) {
$doctorId = $appoinmentParticipant->participantable_id;
}
}
$queryPatient = Person::query()->find($patiendId);
$patient = [
'id' => $queryPatient->id,
'name' => $queryPatient->name,
'email' => $queryPatient->email,
'phone' => $queryPatient->phone,
];
$queryDoctor = PractitionerRole::query()->with(['practitioner.person', 'speciality'])->where('practitioner_id', $doctorId)->first();
$doctor = [
'id' => $doctorId,
'name' => $queryDoctor->person->name,
'speciality' => 'Spesialis ' . $queryDoctor->speciality->name,
'length_of_work_year' => rand(1, 10)
];
return [
'id' => $this->id,
'date' => Carbon::createFromFormat('Y-m-d H:i:s', $this->start_time)->format('Y-m-d'),
'time' => Carbon::createFromFormat('Y-m-d H:i:s', $this->start_time)->format('H:i'),
'doctor' => $doctor,
'organization' => [
'id' => $this->organization->id,
'name' => $this->organization->name,
'address' => $this->organization->currentAddress->text,
],
'patient' => $patient,
];
}
}