<?php
namespace App\Exports;

use VisitorDownload;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;

class DownloadsExport implements FromCollection, WithHeadings, WithMapping
{
    public function collection()
    {
        $query = VisitorDownload::query();
        $query->select('visitor_downloads.id', 'visitor_downloads.created_at', 'visitors.id as visitor_id',
            'visitors.first_name', 'visitors.last_name',
            'visitors.email', 'visitors.company', 'visitors.country', 'publications_lang.publication_id',
            'publications_lang.title as publication');
        $query->join('visitors', 'visitors.id', '=', 'visitor_downloads.visitor_id');
        $query->join('publications_lang', 'publications_lang.publication_id', '=', 'visitor_downloads.publication_id')
            ->where('publications_lang.language_id', 'en');
        $query->where('visitors.website_id', 1);
        $query->orderBy('visitor_downloads.created_at', 'desc');
        return $query->get();
    }
    public function headings(): array
    {
        return [
            'ID',
            'Date',
            'Visitor ID',
            'First Name',
            'Last Name',
            'Email',
            'Company',
            'Country',
            'Pub ID',
            'Publication Title'
        ];
    }
    public function map($visitorDownload): array
    {
        return [
            $visitorDownload->id,
            $visitorDownload->created_at->toDateTimeString(),
            $visitorDownload->visitor_id,
            $visitorDownload->first_name,
            $visitorDownload->last_name,
            $visitorDownload->email,
            $visitorDownload->company,
            $visitorDownload->country,
            $visitorDownload->publication_id,
            $visitorDownload->publication
        ];
    }
}
