first
This commit is contained in:
61
app/Exports/AttendanceDetailExport.php
Normal file
61
app/Exports/AttendanceDetailExport.php
Normal 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();
|
||||
}
|
||||
}
|
||||
68
app/Exports/FinanceVerificationExport.php
Normal file
68
app/Exports/FinanceVerificationExport.php
Normal 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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user