66 lines
2.0 KiB
PHP
66 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace App\Exports;
|
|
|
|
use Maatwebsite\Excel\Concerns\FromCollection;
|
|
use App\Models\IamPrincipal;
|
|
use Maatwebsite\Excel\Concerns\WithHeadings;
|
|
use Illuminate\Support\Collection;
|
|
|
|
class customer_export implements FromCollection, WithHeadings
|
|
{
|
|
/**
|
|
* @return \Illuminate\Support\Collection
|
|
*/
|
|
public function collection()
|
|
{
|
|
$customers = IamPrincipal::where('principal_type_xid', 3)
|
|
->with(['isSubscribed', 'state'])
|
|
->select(
|
|
'id',
|
|
'first_name',
|
|
'last_name',
|
|
'email_address',
|
|
'date_of_birth',
|
|
'state_xid',
|
|
'phone_number'
|
|
)
|
|
->get();
|
|
|
|
$serial = 1;
|
|
return $customers->map(function ($customer) use (&$serial) {
|
|
$subscription = $customer->isSubscribed->first();
|
|
$isSubscribed = $subscription && $subscription->status == 'complete' ? 'Subscribed' : 'Unsubscribed';
|
|
|
|
return [
|
|
'Sr No.' => $serial++, // Increment serial number
|
|
'id' => $customer->id,
|
|
'first_name' => $customer->first_name,
|
|
'last_name' => $customer->last_name,
|
|
'email_address' => $customer->email_address,
|
|
'date_of_birth' => \Carbon\Carbon::parse($customer->date_of_birth)->format('m/d/Y'),
|
|
'state_name' => $customer->state->name ?? '', // Access the state name and handle null
|
|
'phone_number' => $customer->phone_number,
|
|
'subscription_status' => $isSubscribed, // Add the subscription status
|
|
];
|
|
});
|
|
}
|
|
|
|
|
|
// Function to provide the headings in Excel
|
|
public function headings(): array
|
|
{
|
|
return [
|
|
'Sr No.',
|
|
'User Id',
|
|
'First Name',
|
|
'Last Name',
|
|
'Email Address',
|
|
'Date of Birth',
|
|
'State Name',
|
|
'Phone Number',
|
|
'Subscription Status',
|
|
];
|
|
}
|
|
}
|