File: /mnt/data/ghayatcom/ghayatcom-api/app/Http/Resources/AppointmentCollection.php
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\ResourceCollection;
use App\Enums\AppoitmentStatusEnum;
class AppointmentCollection extends ResourceCollection
{
/**
* Transform the resource collection into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
private $code;
public function __construct($resource, $code = 200) {
parent::__construct($resource);
$this->code = $code;
}
public function toArray($request)
{
return [
"code" => $this->code,
"message" => [__('digimed_validation.success_response.data_fetch_success')],
"data" => ['List' => $this->collection->map(function ($item) {
/**
* @var object $item
*/
if($item->patientDetails->roles[0]->name == "dependant") {
$insuranceDetail = (isset($item->insuranceDependantDetails)) ? [
'id' =>$item->insuranceDependantDetails->id,
'insurance_company' =>$item->insuranceDependantDetails->insurance_company,
'policy_number' =>$item->insuranceDependantDetails->policy_number,
'company_name' =>$item->insuranceDependantDetails->company_name,
'cover_from' =>$item->insuranceDependantDetails->cover_from,
'cover_to' =>$item->insuranceDependantDetails->cover_to,
'insurance_type' =>$item->insuranceDependantDetails->insurance_type,
'first_name' =>$item->insuranceDependantDetails->first_name,
'last_name' =>$item->insuranceDependantDetails->last_name,
'passport_number' =>$item->insuranceDependantDetails->passport_number,
'dob' =>$item->insuranceDependantDetails->dob,
'country_code' =>$item->insuranceDependantDetails->country_code,
'mobile_number' =>$item->insuranceDependantDetails->mobile_number,
'email' =>$item->insuranceDependantDetails->email,
] : [];
} else {
$insuranceDetail = (isset($item->insuranceDetails)) ? [
'id' =>$item->insuranceDetails->id,
'insurance_company' =>$item->insuranceDetails->insurance_company,
'policy_number' =>$item->insuranceDetails->policy_number,
'company_name' =>$item->insuranceDetails->company_name,
'cover_from' =>$item->insuranceDetails->cover_from,
'cover_to' =>$item->insuranceDetails->cover_to,
'insurance_type' =>$item->insuranceDetails->insurance_type,
'first_name' =>$item->insuranceDetails->first_name,
'last_name' =>$item->insuranceDetails->last_name,
'passport_number' =>$item->insuranceDetails->passport_number,
'dob' =>$item->insuranceDetails->dob,
'country_code' =>$item->insuranceDetails->country_code,
'mobile_number' =>$item->insuranceDetails->mobile_number,
'email' =>$item->insuranceDetails->email,
] : [];
}
return [
'id' => $item->id,
'consultation_type' => $item->consultation_type,
'clinic_appointment_id' => $item->clinic_appointment_id,
'consultation_type_str' =>$item->consultation_type_str,
'sick_leave_verification' => ($item->sick_leave_verification == 1) ? 'Yes' : 'No',
'consultation_id' => $item->consultation_id,
'patient_id' => $item->patient_id,
'doctor_id' => $item->doctor_id,
'tokbox_session_id' => $item->tokbox_session_id,
'tokbox_token' => $item->tokbox_token,
'appointment_start_dt' => $item->appointment_start_dt,
'appointment_end_dt' => $item->appointment_end_dt,
'consultation_end_time' => $item->consultation_end_time,
'home_visit_dt' => $item->home_visit_dt,
'home_visit_range' => $item->home_visit_range,
'departure_time' => $item->departure_time,
'on_my_way_time' => $item->on_my_way_time,
'on_my_way_end' => $item->on_my_way_end,
'lab_suggestion' => $item->lab_suggestion,
'lab_suggestion_details' => $item->lab_suggestion_details,
'appointment_status' => $item->appointment_status,
'channel' => $item->channel,
'lat_long_address' => $item->lat_long_address,
'price_detail' => $item->price_detail,
'is_avail_insurance_claim_details' => $item->is_avail_insurance_claim_details,
'insurance_claim_status' => ($item->insurance_claim_status == 1 ? "AWAITING REPORT FROM DOCTOR":($item->insurance_claim_status == 2 ? "ACCEPTED":($item->insurance_claim_status == 3 ? "COMPLETED":($item->insurance_claim_status == 4 ? "REJECTED":"")))),
'appointment_request_detail' =>$item->appointment_request_detail,
'symptoms' => $item->appointmentSymptoms,
'patient_latlong' =>[
'latitude' => $item->lat,
'longitude' => $item->long
],
'doctor_latlong' =>[
'latitude' => $item->doctorDetails->userDetail->home_visit_latitude,
'longitude' => $item->doctorDetails->userDetail->home_visit_longitude
],
'patient_detail' =>[
'id' =>$item->patientDetails->id,
'first_name' =>$item->patientDetails->first_name,
'last_name' =>$item->patientDetails->last_name,
'mobile_number' =>$item->patientDetails->mobile_number,
'profile_image' =>$item->patientDetails->profile_image,
'status' =>$item->patientDetails->status,
'avgratingdoctor' =>$item->patientDetails->avgratingdoctor,
'isfavourite' =>$item->patientDetails->isfavourite,
'passport_number' =>$item->patientDetails->passport_number,
'insurance_detail' => $insuranceDetail
],
'doctor_detail' =>[
'id' =>$item->doctorDetails->id,
'first_name' =>$item->doctorDetails->first_name,
'last_name' =>$item->doctorDetails->last_name,
'mobile_number' =>$item->doctorDetails->mobile_number,
'profile_image' =>$item->doctorDetails->profile_image,
'status' =>$item->doctorDetails->status,
'passport_number' =>$item->doctorDetails->passport_number,
'avgratingdoctor' =>$item->doctorDetails->avgratingdoctor,
'isfavourite' =>$item->doctorDetails->isfavourite,
'specialist' => $item->doctorDetails->userDetail->UserAreaSpecialization,
'ondemand_online_status' => $item->doctorDetails->userDetail->ondemand_status,
],
'reasons' =>[
'id' =>$item->appointmentReason->id,
'reason' =>$item->appointmentReason->reasons_text,
'reasons_document' =>$item->appointmentReason->reasons_document,
'reasons_document_url' =>$item->appointmentReason->reason_documents
],
'payment'=>$item->paymentDetails,
'is_reschedule' => $item->is_reschedule,
'reschedule_data' => $item->reschedule_data?json_decode($item->reschedule_data, true):[]
];
})]
];
}
public function withResponse($request, $response)
{
/** @var array $jsonResponse */
$jsonResponse = json_decode($response->getContent(), true);
unset($jsonResponse['links']);
$response->setContent(json_encode($jsonResponse));
}
}