tambah menu pelanggan aktif keseluruhan
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
<?php
|
||||
|
||||
namespace App\Exports\LaporanKeseluruhan;
|
||||
|
||||
use Maatwebsite\Excel\Concerns\FromCollection;
|
||||
use Maatwebsite\Excel\Concerns\WithHeadings;
|
||||
use Maatwebsite\Excel\Concerns\WithMapping;
|
||||
use Maatwebsite\Excel\Concerns\WithEvents;
|
||||
use Maatwebsite\Excel\Events\AfterSheet;
|
||||
use Maatwebsite\Excel\Concerns\WithCustomStartCell;
|
||||
|
||||
class PelangganaktifAllExportExcel implements FromCollection, WithHeadings, WithMapping, WithEvents, WithCustomStartCell
|
||||
{
|
||||
protected $pelangganaktifData;
|
||||
protected $total = 0;
|
||||
protected $counter = 1;
|
||||
protected $startDate;
|
||||
protected $endDate;
|
||||
|
||||
public function __construct($pelangganaktifData, $startDate = null, $endDate = null)
|
||||
{
|
||||
$this->pelangganaktifData = $pelangganaktifData;
|
||||
$this->startDate = $startDate;
|
||||
$this->endDate = $endDate;
|
||||
}
|
||||
|
||||
public function collection()
|
||||
{
|
||||
return collect($this->pelangganaktifData);
|
||||
}
|
||||
|
||||
public function headings(): array
|
||||
{
|
||||
return [
|
||||
'No.',
|
||||
'Kod Caw',
|
||||
'Nama Cawangan',
|
||||
'Jumlah',
|
||||
];
|
||||
}
|
||||
|
||||
public function map($row): array
|
||||
{
|
||||
$jumlah = is_numeric($row['total_pelanggan_aktif'] ?? null) ? (float) $row['total_pelanggan_aktif'] : 0;
|
||||
$this->total += $jumlah;
|
||||
|
||||
return [
|
||||
$this->counter++,
|
||||
$row['kodcaw'] ?? '',
|
||||
$row['details_caw'] ?? '',
|
||||
number_format($jumlah, 2),
|
||||
];
|
||||
}
|
||||
public function startCell(): string
|
||||
{
|
||||
return 'A3'; // Mulakan heading di baris 3
|
||||
}
|
||||
|
||||
public function registerEvents(): array
|
||||
{
|
||||
return [
|
||||
AfterSheet::class => function (AfterSheet $event) {
|
||||
|
||||
// Tajuk laporan di A1:D1
|
||||
$event->sheet->mergeCells('A1:D1');
|
||||
$event->sheet->setCellValue('A1', 'LAPORAN PELANGGAN AKTIF');
|
||||
$event->sheet->getStyle('A1')->getFont()->setSize(14)->setBold(true);
|
||||
$event->sheet->getStyle('A1')->getAlignment()->setHorizontal('center');
|
||||
|
||||
// Tarikh di A2:D2
|
||||
$tarikhMula = $this->startDate ? date('d/m/Y', strtotime($this->startDate)) : '-';
|
||||
$tarikhTamat = $this->endDate ? date('d/m/Y', strtotime($this->endDate)) : '-';
|
||||
$event->sheet->mergeCells('A2:D2');
|
||||
$event->sheet->setCellValue('A2', "Tempoh: {$tarikhMula} hingga {$tarikhTamat}");
|
||||
$event->sheet->getStyle('A2')->getFont()->setItalic(true);
|
||||
$event->sheet->getStyle('A2')->getAlignment()->setHorizontal('center');
|
||||
|
||||
// Kira baris terakhir untuk jumlah keseluruhan
|
||||
$lastRow = count($this->pelangganaktifData) + 3 + 1; // +1 untuk heading
|
||||
|
||||
$event->sheet->mergeCells("A{$lastRow}:C{$lastRow}");
|
||||
$event->sheet->setCellValue("A{$lastRow}", 'Jumlah Keseluruhan');
|
||||
$event->sheet->setCellValue("D{$lastRow}", number_format($this->total, 2));
|
||||
$event->sheet->getStyle("A{$lastRow}:D{$lastRow}")->getFont()->setBold(true);
|
||||
$event->sheet->getStyle("A{$lastRow}:D{$lastRow}")->getAlignment()->setHorizontal('right');
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -10,6 +10,7 @@ use Illuminate\Support\Facades\Http;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use App\Exports\LaporanKeseluruhan\PelangganbaruAllExportExcel;
|
||||
use App\Exports\LaporanKeseluruhan\PelangganaktifAllExportExcel;
|
||||
|
||||
class AnalisaController extends Controller
|
||||
{
|
||||
@@ -51,5 +52,43 @@ class AnalisaController extends Controller
|
||||
return view('reports.pelangganbaru.index', compact('pelangganbaru', 'startDate', 'endDate'));
|
||||
}
|
||||
|
||||
public function pelangganaktif(Request $request)
|
||||
{
|
||||
$current = new Carbon();
|
||||
$request->hostname = config('api.url');
|
||||
// dd($request->hostname );
|
||||
$kod_cawangan = $request->kod_cawangan;
|
||||
$action = $request->input('action', 'search');
|
||||
// dd($action);
|
||||
|
||||
$getReportDate = function ($date_string) use ($current) {
|
||||
if ($date_string == null) {
|
||||
return $current->toDateString();
|
||||
}
|
||||
|
||||
return $date_string;
|
||||
};
|
||||
|
||||
$request->hostname = config('api.url');
|
||||
|
||||
$pelangganaktif = Http::get($request->hostname . '/api/reports/pelangganaktif', [
|
||||
'startDate' => $getReportDate($request->startDate),
|
||||
'endDate' => $getReportDate($request->endDate),
|
||||
])->json();
|
||||
// dd($pelangganbaru);
|
||||
|
||||
$startDate = $getReportDate($request->startDate);
|
||||
$endDate = $getReportDate($request->endDate);
|
||||
|
||||
if ($action === 'excel') {
|
||||
$file_title = sprintf("LaporanPelangganAktif(%s).xlsx", $kod_cawangan, $request->startDate, $request->endDate);
|
||||
return Excel::download(new PelangganaktifAllExportExcel($pelangganaktif,$startDate,$endDate), $file_title);
|
||||
}
|
||||
|
||||
$pelangganaktif = $pelangganaktif ?? [];
|
||||
|
||||
return view('reports.pelangganaktif.index', compact('pelangganaktif', 'startDate', 'endDate'));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user