This commit is contained in:
Saufi
2026-06-03 08:51:22 +08:00
commit a14d43fe34
347 changed files with 38197 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
<?php
namespace App\Exports;
use App\Models\Application;
use App\Models\Attendance;
use App\Models\Position;
use App\Models\PusatMengundi;
use App\Models\SaluranMengundi;
use App\Models\StaffAssignment;
use App\Models\User;
use Illuminate\Support\Carbon;
use Illuminate\Support\Collection;
use OpenSpout\Common\Entity\Row;
use OpenSpout\Writer\XLSX\Writer;
class AttendanceDetailExport
{
/**
* @param Collection<int, StaffAssignment> $assignments
*/
public function write(Collection $assignments, string $absolutePath): void
{
$writer = new Writer;
$writer->openToFile($absolutePath);
$writer->addRow(Row::fromValues([
'Pusat Mengundi',
'Saluran',
'Nama',
'Jawatan',
'Status Kehadiran',
'Masa Check-in',
'Catatan',
]));
foreach ($assignments as $assignment) {
$application = $assignment->application;
$user = $assignment->user;
$pusat = $assignment->pusatMengundi;
$position = $assignment->position;
$saluran = $assignment->saluranMengundi;
$attendance = $assignment->attendance;
$checkInTime = $attendance instanceof Attendance && filled($attendance->check_in_time)
? Carbon::parse($attendance->check_in_time)->format('d/m/Y H:i')
: '';
$writer->addRow(Row::fromValues([
$pusat instanceof PusatMengundi ? $pusat->code.' - '.$pusat->name : '',
$saluran instanceof SaluranMengundi ? $saluran->number : '',
($application instanceof Application ? $application->name : null) ?: ($user instanceof User ? $user->name : ''),
$position instanceof Position ? $position->code : '',
$attendance instanceof Attendance ? $attendance->status : 'not_recorded',
$checkInTime,
$attendance instanceof Attendance ? ($attendance->note ?? '') : '',
]));
}
$writer->close();
}
}

View File

@@ -0,0 +1,68 @@
<?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();
}
}