File: /var/www/vhost/disk-apps/alq-cali.bikenow.co/app/Http/Controllers/Exports/ReporRedemptionExport.php
<?php
namespace App\Http\Controllers\Exports;
use App\Core\Redemption\Domain\ValueObjects\UserQRTypesEnum;
use App\Services\ExperienceService;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Concerns\WithHeadings;
class ReporRedemptionExport implements FromCollection, WithHeadings, WithEvents
{
private $results;
public function __construct($results)
{
$this->results = $results;
}
// set the headings
public function headings(): array
{
return [
__('messages.report_redemptions.title_1'),
__('messages.report_redemptions.title_4'),
__('messages.report_redemptions.title_2-1'),
__('messages.report_redemptions.title_2-2'),
__('messages.report_redemptions.title_2-3'),
__('messages.screen_banners_tag23'),
__('messages.report_redemptions.title_3-1'),
__('messages.report_redemptions.title_3-2'),
__('messages.report_redemptions.title_3-3'),
__('messages.report_redemptions.title_5'),
];
}
// freeze the first row with headings
public function registerEvents(): array
{
return [];
}
public function collection()
{
$data = [];
foreach ($this->results as $report_redemptions) {
$user = null;
if (!$report_redemptions->first_name && !$report_redemptions->last_name) {
$user = $this->getUser($report_redemptions->model, $report_redemptions->model_id);
}
$data[] = array(
$report_redemptions->name ?? '',
$report_redemptions->options ?? '',
$report_redemptions->first_name ?? $report_redemptions->student_name ?? $user->first_name ?? '',
$report_redemptions->last_name ?? $report_redemptions->student_last_name ?? $user->last_name ?? '',
$report_redemptions->email ?? $report_redemptions->mail ?? $user->email ?? '',
$report_redemptions->segmentation,
$report_redemptions->logged_first_name,
$report_redemptions->logged_last_name,
$report_redemptions->logged_email,
\Carbon\Carbon::parse($report_redemptions->created_at)->format('Y-m-d h:i:s A'),
);
}
return collect($data);
}
public function getUser($model, $model_id)
{
$user = null;
switch ($model) {
case UserQRTypesEnum::EXPERIENCE:
$experienceService = new ExperienceService();
$user = $experienceService->getUser($model_id);
break;
}
return $user;
}
}