HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/qas.sports-crowd.com/app/Http/Controllers/Exports/ExperiencesExport.php
<?php

namespace App\Http\Controllers\Exports;

use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Concerns\WithHeadings;

class ExperiencesExport implements FromCollection, WithHeadings, WithEvents
{
    private $results;

    public function __construct($results)
    {
        $this->results = $results;
    }

    // set the headings
    public function headings(): array
    {
        return [
            __('experiences.monitor.datatables.columns.payment_identifier'),
            __('experiences.monitor.datatables.columns.paid_slots'),
            __('experiences.monitor.datatables.columns.raffle'),
            __('experiences.monitor.datatables.columns.referral_code'),
            __('experiences.monitor.datatables.columns.name'),
            __('experiences.monitor.datatables.columns.document_type'),
            __('experiences.monitor.datatables.columns.document'),
            __('experiences.monitor.datatables.columns.email'),
            __('experiences.monitor.datatables.columns.phone'),
            __('experiences.monitor.datatables.columns.birthdate'),
            __('experiences.monitor.datatables.columns.guardian_name'),
            __('experiences.monitor.datatables.columns.guardian_document'),
            __('experiences.monitor.datatables.columns.guardian_email'),
            __('experiences.monitor.datatables.columns.guardian_phone'),
            __('experiences.monitor.datatables.columns.billing_first_name'),
            __('experiences.monitor.datatables.columns.billing_document_type'),
            __('experiences.monitor.datatables.columns.billing_document'),
            __('experiences.monitor.datatables.columns.billing_email'),
            __('experiences.monitor.datatables.columns.billing_phone'),
            __('experiences.monitor.datatables.columns.billing_address'),
            __('experiences.monitor.datatables.columns.experience'),
            __('experiences.monitor.datatables.columns.experience_plan'),
            __('experiences.monitor.datatables.columns.experience_date'),
            __('experiences.monitor.datatables.columns.experience_expires_at'),
            __('experiences.monitor.datatables.columns.experience_status'),
            __('experiences.monitor.datatables.columns.payment_state'),
            __('experiences.monitor.datatables.columns.payment_total'),
            __('experiences.monitor.datatables.columns.payment_reference'),
            __('experiences.monitor.datatables.columns.payment_transaction'),
            __('experiences.monitor.datatables.columns.payment_date'),
        ];
    }

    // freeze the first row with headings
    public function registerEvents(): array
    {
        return [];
    }

    public function collection()
    {
        $data = [];
        foreach ($this->results as $payment) {
            $data[] = array(
                $this->getObjectValueByKey($payment, 'payment_identifier'),
                $this->getObjectValueByKey($payment, 'amount'),
                $this->getObjectValueByKey($payment, 'raffle'),
                $this->getObjectValueByKey($payment, 'referral_code'),
                $this->getObjectValueByKey($payment, 'first_name') . ' ' . $this->getObjectValueByKey($payment, 'last_name'),
                $this->getObjectValueByKey($payment, 'document_type'),
                $this->getObjectValueByKey($payment, 'document'),
                $this->getObjectValueByKey($payment, 'email'),
                $this->getObjectValueByKey($payment, 'phone'),
                $this->getObjectValueByKey($payment, 'birthdate'),
                $this->getObjectValueByKey($payment, 'guardian_first_name') . ' ' . $this->getObjectValueByKey($payment, 'guardian_last_name'),
                $this->getObjectValueByKey($payment, 'guardian_document'),
                $this->getObjectValueByKey($payment, 'guardian_email'),
                $this->getObjectValueByKey($payment, 'guardian_phone'),
                $this->getObjectValueByKey($payment, 'billing_first_name') . ' ' . $this->getObjectValueByKey($payment, 'billing_last_name'),
                $this->getObjectValueByKey($payment, 'billing_document_type'),
                $this->getObjectValueByKey($payment, 'billing_document'),
                $this->getObjectValueByKey($payment, 'billing_email'),
                $this->getObjectValueByKey($payment, 'billing_phone'),
                $this->getObjectValueByKey($payment, 'billing_address'),
                $this->getObjectValueByKey($payment, 'experience'),
                $this->getObjectValueByKey($payment, 'experience_plan'),
                $payment->experience_date ? \Carbon\Carbon::parse($payment->experience_date)->format('Y-m-d h:i:s A') : '',
                $payment->experience_expires_at ? \Carbon\Carbon::parse($payment->experience_expires_at)->format('Y-m-d h:i:s A') : '',
                $this->getObjectValueByKey($payment, 'experience_status'),
                $this->getObjectValueByKey($payment, 'payment_state'),
                $this->getObjectValueByKey($payment, 'payment_total'),
                $this->getObjectValueByKey($payment, 'payment_reference'),
                $this->getObjectValueByKey($payment, 'payment_transaction'),
                $payment->payment_date ? \Carbon\Carbon::parse($payment->payment_date)->format('Y-m-d h:i:s A') : ''
            );
        }
        return collect($data);
    }

    private function getObjectValueByKey($object, $tag)
    {
        foreach ($object as $key => $value) {
            if ($key == $tag)
                return $value;
        }
    }
}