<?php
namespace App\Exports;

use App\Models\FormEventRegistration;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;

class EventRegistrationExport implements FromCollection, WithHeadings, WithMapping
{
    public function collection()
    {
        $query = FormEventRegistration::query();

        $query->orderBy('full_name', 'asc');
        return $query->get();
    }

    public function headings(): array
    {
        return [
            'ID',
            'Form',
            'Event Registration',
            'Full Name',
            'Job Title',
            'Department',
            'Email',
            'Company Name',
            'Company Type',
            'Special Request',
            'Special Request Comment',
            'Dinner Join',
            'Company Full Name',
            'Company Address',
            'Company Country',
            'Company VAT',
            'Invoice Email',
            'Order Number',
            'Additional Information',
            'Additional Information Comment',
            'Agree Take Photos',
            'Agree Check',
            'Created At',
        ];
    }

    public function map($form): array
    {
        return [
            $form->id,
            $form->source === 'masterclass26_registration' ? 'Masterclass 26 Registration' : 'Event Registration',
            $form->event_registration ? 'Yes' : 'No',
            $form->full_name,
            $form->job_title,
            $form->department,
            $form->email,
            $form->company_name,
            $form->company_type,
            $form->special_request ? 'Yes' : 'No',
            $form->special_request_comment,
            $form->dinner_join,
            $form->company_full_name,
            $form->company_address,
            $form->company_country,
            $form->company_vat,
            $form->invoice_email,
            $form->order_number,
            $form->additional_information ? 'Yes' : 'No',
            $form->additional_information_comment,
            $form->agree_photos ? 'Yes' : 'No',
            $form->agree_check ? 'Yes' : 'No',
            $form->created_at ? $form->created_at->toDateTimeString() : '',
        ];
    }
}
