<?php
namespace App\Exports;

use NewsletterSubscription;
use DB;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;

class NewsletterSubscriptionsExport implements FromCollection, WithHeadings, WithMapping
{
    public function collection()
    {
        $query = NewsletterSubscription::query();
        $query->select(DB::raw('newsletter_subscriptions.*, visitors.first_name, visitors.last_name, visitors.company, visitors.country'));
        $query->where('newsletter_subscriptions.website_id', 1);
        $query->orderBy('newsletter_subscriptions.created_at', 'desc');
        $query->leftJoin('visitors', function ($query) {
            $query->on('visitors.id', '=', 'newsletter_subscriptions.visitor_id');
        });
        return $query->get();
    }
    public function headings(): array
    {
        return [
            'ID',
            'Date',
            'First Name',
            'Last Name',
            'Email',
            'Company',
            'Country'
        ];
    }
    public function map($newsletterSubs): array
    {
        return [
            $newsletterSubs->id,
            $newsletterSubs->created_at->toDateTimeString(),
            $newsletterSubs->first_name,
            $newsletterSubs->last_name,
            $newsletterSubs->email,
            $newsletterSubs->company,
            $newsletterSubs->country
        ];
    }
}
