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;
}
}
}