|
Server : Apache/2.4.41 (Ubuntu) System : Linux vmi1525618.contaboserver.net 5.4.0-105-generic #119-Ubuntu SMP Mon Mar 7 18:49:24 UTC 2022 x86_64 User : www-data ( 33) PHP Version : 8.2.12 Disable Function : NONE Directory : /var/www/lecturebazaar.com/app/Exports/ |
Upload File : |
<?php
namespace App\Exports;
use App\Http\Controllers\Web\traits\UserFormFieldsTrait;
use App\Models\UserFormField;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;
class InstructorsExport implements FromCollection, WithHeadings, WithMapping
{
use UserFormFieldsTrait;
protected $users;
protected $currency;
protected $form;
public function __construct($users)
{
$this->users = $users;
$this->currency = currencySign();
$this->form = $this->getFormFieldsByType("teacher");
}
/**
* @return Collection
*/
public function collection()
{
return $this->users;
}
/**
* @inheritDoc
*/
public function headings(): array
{
$items = [
'ID',
'Name',
'Mobile',
'Email',
'Classes Sales',
'Appointments Sales',
'Purchased Classes',
'Purchased Appointments',
'Wallet Charge',
'User Group',
'Register Date',
'Status',
'Verified',
'Ban',
];
if (!empty($this->form)) {
foreach ($this->form->fields as $field) {
$items[] = $field->title;
}
}
return $items;
}
/**
* @inheritDoc
*/
public function map($user): array
{
$items = [
$user->id,
$user->full_name,
$user->mobile,
$user->email,
$user->classesSalesCount . '(' . $this->currency . $user->classesSalesSum . ')',
$user->meetingsSalesCount . '(' . $this->currency . $user->meetingsSalesSum . ')',
$user->classesPurchasedsCount . '(' . $this->currency . $user->classesPurchasedsSum . ')',
$user->meetingsPurchasedsCount . '(' . $this->currency . $user->meetingsPurchasedsSum . ')',
$this->currency . $user->getAccountingBalance(),
!empty($user->userGroup) ? $user->userGroup->group->name : '',
dateTimeFormat($user->created_at, 'Y/m/j - H:i'),
$user->status,
$user->verified ? 'Yes' : 'No',
($user->ban and !empty($user->ban_end_at) and $user->ban_end_at > time()) ? ('Yes ' . '(Until ' . dateTimeFormat($user->ban_end_at, 'Y/m/j') . ')') : 'No',
];
if (!empty($this->form)) {
$items = $this->handleFieldsForExport($this->form, $user, $items);
}
return $items;
}
}