69 lines
2.0 KiB
PHP
69 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace App\Exports;
|
|
|
|
use App\Models\Application;
|
|
use App\Models\BankVerification;
|
|
use App\Models\Position;
|
|
use App\Models\PusatMengundi;
|
|
use Illuminate\Support\Collection;
|
|
use OpenSpout\Common\Entity\Row;
|
|
use OpenSpout\Writer\XLSX\Writer;
|
|
|
|
class FinanceVerificationExport
|
|
{
|
|
/**
|
|
* @param Collection<int, BankVerification> $verifications
|
|
*/
|
|
public function write(Collection $verifications, string $absolutePath): void
|
|
{
|
|
$writer = new Writer;
|
|
$writer->openToFile($absolutePath);
|
|
|
|
$writer->addRow(Row::fromValues([
|
|
'Nama',
|
|
'No IC',
|
|
'Telefon',
|
|
'Email',
|
|
'Pusat Mengundi',
|
|
'Jawatan',
|
|
'Bank',
|
|
'No Akaun',
|
|
'Status Bank',
|
|
'Penyata Bank',
|
|
'Nota Kewangan',
|
|
]));
|
|
|
|
foreach ($verifications as $verification) {
|
|
$application = $verification->application;
|
|
if (! $application instanceof Application) {
|
|
continue;
|
|
}
|
|
|
|
$position = $application->approvedPosition ?: $application->requestedPosition;
|
|
$positionCode = $position instanceof Position ? $position->code : null;
|
|
$pusat = $application->pusatMengundi;
|
|
$pusatLabel = $pusat instanceof PusatMengundi
|
|
? trim($pusat->code.' - '.$pusat->name)
|
|
: '';
|
|
$hasBankStatement = $application->documents->contains('document_type', 'bank_statement') === true;
|
|
|
|
$writer->addRow(Row::fromValues([
|
|
$application->name,
|
|
$application->ic_number,
|
|
$application->phone_number,
|
|
$application->email,
|
|
$pusatLabel,
|
|
$positionCode,
|
|
$application->bank_name,
|
|
$application->bank_account_number,
|
|
$verification->status,
|
|
$hasBankStatement ? 'Ada' : 'Tiada',
|
|
$verification->finance_note,
|
|
]));
|
|
}
|
|
|
|
$writer->close();
|
|
}
|
|
}
|