Initial commit - expense
Deploy to VPS (PAT over HTTPS) / deploy (push) Has been cancelled

This commit is contained in:
root
2026-06-01 15:01:03 +07:00
parent 9e9fab4a3f
commit 1c1418f3e0
123 changed files with 18622 additions and 10376 deletions
+106
View File
@@ -0,0 +1,106 @@
<?php
namespace App\Exports;
use App\Models\AuditTrail;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithColumnWidths;
use Maatwebsite\Excel\Concerns\WithStyles;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
class AuditTrailExport implements FromQuery, WithMapping, WithHeadings, WithColumnWidths, WithStyles
{
protected $filters;
public function __construct($filters)
{
$this->filters = $filters;
}
/**
* Menggunakan FromQuery untuk efisiensi memori pada data besar
*/
public function query()
{
$f = $this->filters;
$query = AuditTrail::with(['user.cabang.cabang.region']);
// Filter Region & Cabang
if (!empty($f['region']) || !empty($f['cabang'])) {
$query->whereHas('user.cabang.cabang', function($q) use ($f) {
if (!empty($f['cabang'])) {
$q->where('id', $f['cabang']);
}
if (!empty($f['region'])) {
$q->whereHas('region', function($rq) use ($f) {
// PERBAIKAN: Gunakan 'code' sesuai image_63aac6.png
$rq->where('code', $f['region']);
});
}
});
}
// Filter User & Tanggal...
if (!empty($f['admin_id'])) {
$query->where('user_id', $f['admin_id']);
}
return $query->latest();
}
/**
* Header Tabel Excel
*/
public function headings(): array
{
return [
'Waktu',
'User',
'IP Address',
'Aksi',
'Aktivitas',
'Browser'
];
}
/**
* Transformasi Data per baris
*/
public function map($audit): array
{
return [
$audit->created_at->format('d-m-Y H:i:s'),
$audit->user->name ?? 'System',
$audit->ip_address,
$audit->action,
$audit->activity,
$audit->browser,
];
}
/**
* Atur Lebar Kolom agar rapi secara otomatis
*/
public function columnWidths(): array
{
return [
'A' => 20,
'B' => 20,
'C' => 15,
'D' => 15,
'E' => 50,
'F' => 20,
];
}
/**
* Styling Header agar lebih profesional
*/
public function styles(Worksheet $sheet)
{
return [
1 => ['font' => ['bold' => true]],
];
}
}
+53
View File
@@ -0,0 +1,53 @@
<?php
namespace App\Exports;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
class PendingDocumentExport implements FromCollection, WithHeadings, WithMapping, ShouldAutoSize
{
protected $cabangs;
public function __construct($cabangs)
{
$this->cabangs = $cabangs;
}
public function collection()
{
return $this->cabangs;
}
public function headings(): array
{
return [
'Region',
'Nama Cabang',
'Up Country',
'Vehicle',
'Entertainment',
'Meeting',
'Others',
'Total Pending',
'Budget Aktif'
];
}
public function map($cabang): array
{
return [
$cabang->region->name ?? '-',
$cabang->name,
$cabang->pending_details['up_country'] ?? 0,
$cabang->pending_details['vehicle'] ?? 0,
$cabang->pending_details['entertainment'] ?? 0,
$cabang->pending_details['meeting'] ?? 0,
$cabang->pending_details['others'] ?? 0,
$cabang->total_pending,
$cabang->available_budget
];
}
}