HEX
Server: nginx/1.24.0
System: Linux DGT-WORDPRESS-VM-SERVER 6.14.0-1017-azure #17~24.04.1-Ubuntu SMP Mon Dec 1 20:10:50 UTC 2025 x86_64
User: ubuntu (1000)
PHP: 8.4.12
Disabled: NONE
Upload Files
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));
    }
}